> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yelu.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 聊天示例

> 构建完整的非流式聊天请求，并读取助手文本与 Token 用量。

以下示例发送 System 与 User 消息，检查 HTTP 结果，并读取 Assistant Content 与 Usage。

<CodeGroup>
  ```bash Curl theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl -sS https://api.yelu.ai/v1/chat/completions \
    -H "Authorization: Bearer $YELU_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"model":"gpt-4o-mini","messages":[{"role":"system","content":"用一个类比解释技术概念。"},{"role":"user","content":"什么是 Embedding？"}],"temperature":0.3,"max_completion_tokens":180}' \
    | jq '{text: .choices[0].message.content, usage: .usage}'
  ```

  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  async function chat(question) {
    const response = await fetch('https://api.yelu.ai/v1/chat/completions', {
      method: 'POST',
      headers: { Authorization: `Bearer ${process.env.YELU_API_KEY}`, 'Content-Type': 'application/json' },
      body: JSON.stringify({
        model: 'gpt-4o-mini',
        messages: [{ role: 'system', content: '用一个类比解释技术概念。' }, { role: 'user', content: question }],
        temperature: 0.3,
        max_completion_tokens: 180,
      }),
    });
    if (!response.ok) throw new Error(await response.text());
    const data = await response.json();
    return { text: data.choices[0].message.content, usage: data.usage };
  }
  console.log(await chat('什么是 Embedding？'));
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import os
  import requests

  def chat(question):
      response = requests.post(
          "https://api.yelu.ai/v1/chat/completions",
          headers={"Authorization": f"Bearer {os.environ['YELU_API_KEY']}"},
          json={
              "model": "gpt-4o-mini",
              "messages": [{"role": "system", "content": "用一个类比解释技术概念。"}, {"role": "user", "content": question}],
              "temperature": 0.3,
              "max_completion_tokens": 180,
          },
          timeout=60,
      )
      response.raise_for_status()
      data = response.json()
      return {"text": data["choices"][0]["message"]["content"], "usage": data.get("usage")}

  print(chat("什么是 Embedding？"))
  ```
</CodeGroup>

继续对话时，将 Assistant Message 和新的 User Message 追加到 `messages`。Chat Completions 的历史由应用管理；在达到上下文限制前应裁剪或总结，同时保留原始 System Policy。
