> ## 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.

# 使用 Promptfoo 搭配 CometAPI

> 使用本指南透過設定 base URL、API key，以及 model 或 provider 選項，為 Promptfoo 設定 CometAPI。

[Promptfoo](https://www.promptfoo.dev/) 是一個用於 Prompt 評估、回歸測試與 AI 紅隊測試的框架。Promptfoo 內含一個 `cometapi` provider，可透過與 OpenAI 相容的端點呼叫 CometAPI。

## 先決條件

* Node.js 18+
* 已在本機安裝 Promptfoo，或透過 `npx` 執行
* 擁有一個具有效 API key 的 CometAPI 帳戶 — [在控制台取得你的 API key](https://www.cometapi.com/console/token)
* 來自 [CometAPI Models 頁面](/zh-Hant/overview/models) 的 model ID

## 設定整合

<Steps>
  <Step title="設定你的 CometAPI API key">
    在執行評估前先設定 `COMETAPI_KEY`：

    ```bash theme={null}
    read -rsp "CometAPI API key: " COMETAPI_KEY
    printf '\n'
    export COMETAPI_KEY
    ```
  </Step>

  <Step title="選擇 provider 格式">
    Promptfoo 對 CometAPI 使用以下 provider ID 格式：

    ```yaml theme={null}
    providers:
      - cometapi:<type>:<model>
    ```

    請使用以下 provider 類型：

    | 類型           | 使用情境                          |
    | ------------ | ----------------------------- |
    | `chat`       | 聊天補全、視覺與多模態（Multimodal）Prompt |
    | `completion` | 文字補全模型                        |
    | `embedding`  | 文字嵌入評估                        |
    | `image`      | 圖像生成評估                        |

    你也可以使用 `cometapi:your-model-id` 作為預設聊天模式。
  </Step>

  <Step title="執行 CLI 評估">
    以下指令會執行單一 Prompt 的聊天評估：

    ```bash theme={null}
    npx promptfoo@latest eval \
      --prompts "Write a concise release note for {{feature}}" \
      --vars feature="a unified API dashboard" \
      -r cometapi:chat:your-model-id
    ```
  </Step>

  <Step title="建立 Promptfoo 設定檔">
    以下 `promptfooconfig.yaml` 會使用 CometAPI 模型評估相同的 Prompt：

    ```yaml theme={null}
    prompts:
      - "Classify this support request: {{message}}"

    providers:
      - id: cometapi:chat:your-model-id
        config:
          temperature: 0.2
          max_tokens: 256

    tests:
      - vars:
          message: "The API key works locally but fails in production."
        assert:
          - type: contains-any
            value:
              - authentication
              - configuration
    ```

    使用 Promptfoo 執行此設定檔：

    ```bash theme={null}
    npx promptfoo@latest eval -c promptfooconfig.yaml
    ```
  </Step>
</Steps>

## Provider 範例

使用與你想評估之模型行為相符的 provider 類型：

```yaml theme={null}
providers:
  - cometapi:chat:your-model-id
  - cometapi:completion:your-model-id
  - cometapi:embedding:your-model-id
  - cometapi:image:your-model-id
```

對於多模態（Multimodal）測試，請保持使用 `chat` provider 類型，並透過 Promptfoo 測試變數傳遞圖片變數。

## 疑難排解

<AccordionGroup>
  <Accordion title="Promptfoo 找不到 API key">
    請確認 `COMETAPI_KEY` 已在執行 `promptfoo eval` 的同一個 shell 工作階段中匯出。
  </Accordion>

  <Accordion title="provider 類型與模型不相符">
    對話式與多模態模型請使用 `chat`，嵌入模型請使用 `embedding`，圖像生成模型請使用 `image`。
  </Accordion>

  <Accordion title="model ID 失敗">
    請將 `your-model-id` 替換為來自 [CometAPI Models 頁面](/zh-Hant/overview/models) 的精確 model ID。
  </Accordion>
</AccordionGroup>

## 相關資源

* [Promptfoo CometAPI 提供者](https://www.promptfoo.dev/docs/providers/cometapi/)
* [CometAPI 快速開始](/zh-Hant/overview/quick-start)
* [CometAPI 模型頁面](/zh-Hant/overview/models)

<script type="application/ld+json">
  {`
    {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "HowTo",
        "@id": "https://apidoc.cometapi.com/integrations/promptfoo#howto",
        "name": "使用 Promptfoo 搭配 CometAPI",
        "description": "使用本指南透過設定 base URL、API key，以及 model 或 provider 選項來設定 Promptfoo 與 CometAPI 搭配使用。",
        "step": [
          {
            "@type": "HowToStep",
            "@id": "https://apidoc.cometapi.com/integrations/promptfoo#step-1",
            "position": 1,
            "name": "設定你的 CometAPI API key",
            "text": "將你的 CometAPI API key 儲存在整合所使用的環境變數或設定欄位中。"
          },
          {
            "@type": "HowToStep",
            "@id": "https://apidoc.cometapi.com/integrations/promptfoo#step-2",
            "position": 2,
            "name": "選擇 provider 格式",
            "text": "完成「使用 Promptfoo 搭配 CometAPI」指南中的「選擇 provider 格式」步驟。"
          },
          {
            "@type": "HowToStep",
            "@id": "https://apidoc.cometapi.com/integrations/promptfoo#step-3",
            "position": 3,
            "name": "執行 CLI 評估",
            "text": "完成「使用 Promptfoo 搭配 CometAPI」指南中的「執行 CLI 評估」步驟。"
          },
          {
            "@type": "HowToStep",
            "@id": "https://apidoc.cometapi.com/integrations/promptfoo#step-4",
            "position": 4,
            "name": "建立 Promptfoo 設定檔",
            "text": "完成「使用 Promptfoo 搭配 CometAPI」指南中的「建立 Promptfoo 設定檔」步驟。"
          }
        ]
      },
      {
        "@type": "BreadcrumbList",
        "itemListElement": [
          {
            "@type": "ListItem",
            "position": 1,
            "name": "CometAPI 文件",
            "item": "https://apidoc.cometapi.com/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "整合",
            "item": "https://apidoc.cometapi.com/integrations"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "使用 Promptfoo 搭配 CometAPI",
            "item": "https://apidoc.cometapi.com/integrations/promptfoo"
          }
        ]
      }
    ]
    }
    `}
</script>
