7.7.2. OPENAI-02 — Conversations and Parameters
This tutorial covers multi-turn conversations, the optional request parameters, and reading token usage.
7.7.2.1. Multi-turn conversations
A chat request carries the whole conversation as an ordered array of messages.
The model sees every prior turn. Roles are system (instructions),
user, assistant (previous model replies), and tool (function
results — see OPENAI-04 — Tools and Function Calling):
let req = ChatCompletionRequest(model = "gpt-4o-mini", messages <- [
ChatMessage(role = "system", content = "You are a terse assistant."),
ChatMessage(role = "user", content = "Remember the number 7."),
ChatMessage(role = "assistant", content = "Got it — 7."),
ChatMessage(role = "user", content = "What number did I ask you to remember?")])
let res = chat(client, req)
7.7.2.2. Optional parameters
ChatCompletionRequest exposes the common knobs as @optional fields.
Because options rtti is set, default-valued optionals are omitted from the
wire — only the ones you set are sent. Set them with named arguments
(use <- for the array-valued stop):
let req = ChatCompletionRequest(model = "gpt-4o-mini",
messages <- [ChatMessage(role = "user", content = "Write one word.")],
temperature = 0.2,
max_tokens = 16,
seed = 42,
stop <- ["\n\n"])
Other optionals include top_p, n, max_completion_tokens,
frequency_penalty, presence_penalty, user, and tool_choice.
7.7.2.3. Token usage
Most responses include a Usage breakdown — prompt, completion, and total
tokens — useful for cost tracking and staying within context limits:
let u = res.response.usage
print("prompt={u.prompt_tokens} completion={u.completion_tokens} total={u.total_tokens}\n")
7.7.2.4. Quick Reference
Field / value |
Meaning |
|---|---|
|
The full conversation, in order |
|
|
|
Sampling controls |
|
Length cap, determinism, stop sequences |
|
Prompt / completion / total token counts |
See also
Full source: tutorials/dasOPENAI/02_conversations_and_params.das
Next tutorial: OPENAI-03 — Structured Outputs (JSON mode)