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

# 文字與聊天 API

> 依照你的請求格式，選擇符合需求的 CometAPI 文字與聊天 API：聊天補全、回應、Anthropic 訊息或 Gemini 內容產生。

使用 CometAPI 文字模型文件時，請依照你的請求格式對應到實作該格式的頁面。若是 OpenAI 相容的聊天，從聊天補全或回應開始；若是供應商原生格式，請使用對應的供應商頁面。

## 選擇文字與聊天 API

<CardGroup cols={2}>
  <Card title="建立聊天補全" icon="message" href="/api/text/chat">
    使用 `messages` 陣列傳送 OpenAI 相容的聊天訊息。
  </Card>

  <Card title="建立模型回應" icon="sparkles" href="/api/text/responses">
    透過 Responses API 使用推理、多模態（Multimodal）輸出與內建工具。
  </Card>

  <Card title="建立 Message" icon="message" href="/api/text/anthropic-messages">
    使用供應商原生欄位呼叫與 Claude 相容的 Messages 工作流程。
  </Card>

  <Card title="產生內容" icon="sparkles" href="/api/text/gemini-generating-content">
    傳送 Gemini 原生內容產生請求。
  </Card>
</CardGroup>

## 呼叫文字模型

可使用來自 [Models page](/zh-Hant/overview/models) 或 [model directory](https://www.cometapi.com/models/) 的任何具備文字能力的 model ID。以下範例會呼叫 OpenAI 相容的聊天補全端點。

<Note>
  這些範例使用預留位置 `your-model-id`。在執行請求前，請將其替換為 [Models page](/zh-Hant/overview/models) 或 [model directory](https://www.cometapi.com/models/) 中可用的文字 model ID。
</Note>

<CodeGroup>
  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://api.cometapi.com/v1/chat/completions",
      headers={
          "Authorization": "Bearer " + os.environ["COMETAPI_KEY"],
          "Content-Type": "application/json",
      },
      json={
          "model": "your-model-id",
          "messages": [
              {
                  "role": "user",
                  "content": "Write one sentence about CometAPI.",
              }
          ],
      },
      timeout=30,
  )

  response.raise_for_status()
  result = response.json()
  print(result["choices"][0]["message"]["content"])
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://api.cometapi.com/v1/chat/completions", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "your-model-id",
      messages: [
        {
          role: "user",
          content: "Write one sentence about CometAPI.",
        },
      ],
    }),
  });

  if (!response.ok) {
    throw new Error(await response.text());
  }

  const result = await response.json();
  console.log(result.choices[0].message.content);
  ```

  ```bash cURL theme={null}
  curl https://api.cometapi.com/v1/chat/completions \
    -H "Authorization: Bearer $COMETAPI_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "your-model-id",
      "messages": [
        {
          "role": "user",
          "content": "Write one sentence about CometAPI."
        }
      ]
    }'
  ```
</CodeGroup>

## 回應範例

成功的回應可能會像這樣。欄位值會依 model 與請求而有所不同：

```json theme={null}
{
  "id": "chatcmpl_example",
  "object": "chat.completion",
  "created": 1779960520,
  "model": "your-model-id",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "CometAPI lets developers route model requests through one API surface."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 14,
    "total_tokens": 26
  }
}
```

## 範例模型記錄

<Info>
  此範例模型目錄回應展示了 `/api/models` 的封裝格式，以及單一文字模型記錄的結構。這不是完整的模型清單。
</Info>

```bash cURL theme={null}
curl https://api.cometapi.com/api/models
```

```json theme={null}
{
  "success": true,
  "page": 1,
  "page_size": 20,
  "total": 302,
  "data": [
    {
      "created": 1773798949,
      "id": "your-text-model-id",
      "code": "your-text-model-id",
      "provider": "ExampleProvider",
      "provider_code": "example",
      "name": "Example text model",
      "model_type": "text",
      "features": [
        "text-to-text"
      ],
      "endpoints": "{\n  \"openai-chat\": {\n    \"path\": \"/v1/chat/completions\",\n    \"method\": \"POST\"\n  }\n}",
      "pricing": {
        "currency": "USD / M Tokens",
        "input": 0.5,
        "output": 1.5,
        "per_request": null,
        "per_second": null
      }
    }
  ]
}
```

## 常見錯誤

<AccordionGroup>
  <Accordion title="缺少或無效的 API key">
    請傳送 `Authorization: Bearer $COMETAPI_KEY`。
  </Accordion>

  <Accordion title="錯誤的 base URL">
    對於 OpenAI 相容請求，請使用 `https://api.cometapi.com/v1`。
  </Accordion>

  <Accordion title="錯誤的模型類型">
    請從[模型頁面](/zh-Hant/overview/models)選擇支援文字的模型。
  </Accordion>

  <Accordion title="供應商特定參數錯誤">
    先移除選填欄位，然後一次加回一個欄位。
  </Accordion>
</AccordionGroup>

## 錯誤代碼與重試策略

<AccordionGroup>
  <Accordion title="400">
    在修正請求主體之前，不要重試。
  </Accordion>

  <Accordion title="401">
    在 API key 存在且有效之前，不要重試。
  </Accordion>

  <Accordion title="404">
    重試前請檢查 base URL、路徑與 model ID。
  </Accordion>

  <Accordion title="429">
    使用指數退避進行重試，並降低並行數。
  </Accordion>

  <Accordion title="500 or 503">
    對暫時性的供應商或服務錯誤，請使用退避策略重試。
  </Accordion>
</AccordionGroup>

<Tip>
  如需實作模式，請參閱[錯誤代碼與重試策略](/zh-Hant/guides/error-codes-and-retry-strategy)與[速率限制與並行](/zh-Hant/guides/rate-limits-and-concurrency)。
</Tip>

## 定價與模型目錄

<CardGroup cols={3}>
  <Card title="模型頁面" icon="list" href="/overview/models">
    了解 CometAPI 如何在文件中公開 model IDs。
  </Card>

  <Card title="模型目錄" icon="puzzle-piece" href="https://www.cometapi.com/models/">
    瀏覽模型可用性與能力。
  </Card>

  <Card title="定價" icon="tag" href="https://www.cometapi.com/pricing/">
    在呼叫模型之前先查看定價。
  </Card>
</CardGroup>
