全部產品
Search
文件中心

Microservices Engine:AI 代理

更新時間:Apr 19, 2025

AI 代理外掛程式實現了基於 OpenAI API 契約的 AI 代理功能。目前支援 OpenAI、Azure OpenAI、月之暗面(Moonshot)和通義千問等 AI 服務提供者。

重要
  • 請只對處理 AI 流量的路由開啟該外掛程式,該外掛程式對於非OpenAI API 介面標準的請求會返回 404。

  • 請求路徑尾碼匹配/v1/chat/completions時,對應文生文情境,會使用 OpenAI 的文生文協議解析請求 Body,再轉換為對應 LLM 廠商的文生文協議。

  • 請求路徑尾碼匹配/v1/embeddings時,對應文本向量情境,會使用 OpenAI 的文本向量協議解析請求 Body,再轉換為對應 LLM 廠商的文本向量協議。

運行屬性

外掛程式執行階段:預設階段外掛程式執行優先順序:100

配置欄位

基本配置

名稱

資料類型

填寫要求

預設值

描述

provider

object

必填

-

配置目標 AI 服務提供者的資訊。

provider的配置欄位說明如下:

名稱

資料類型

填寫要求

預設值

描述

type

string

必填

-

AI 服務提供者名稱。

apiTokens

array of string

非必填

-

用於在訪問 AI 服務時進行認證的令牌。如果配置了多個 token,外掛程式會在請求時隨機進行選擇。部分服務提供者只支援配置一個 token。

timeout

number

非必填

-

訪問 AI 服務的逾時時間。單位為毫秒,預設值為 120000,即 2 分鐘。

modelMapping

map of string

非必填

-

AI 模型映射表,用於將請求中的模型名稱映射為服務提供者支援模型名稱。

  1. 支援首碼匹配。例如用 “gpt-3-” 匹配所有名稱以“gpt-3-”開頭的模型

  2. 支援使用 "" 為鍵來配置通用兜底映射關係。

  3. 如果映射的目標名稱為空白字串 "",則表示保留原模型名稱。

protocol

string

非必填

-

外掛程式對外提供的 API 介面契約。目前支援以下取值:openai(預設值,使用 OpenAI 的介面契約)、original(使用目標服務提供者的原始介面契約)。

context

object

非必填

-

配置 AI 對話上下文資訊。

customSettings

array of customSetting

非必填

-

為AI請求指定覆蓋或者填充參數。

context的配置欄位說明如下:

名稱

資料類型

填寫要求

預設值

描述

fileUrl

string

必填

-

儲存 AI 對話內容相關的檔案 URL。僅支援純文字類型的檔案內容。

serviceName

string

必填

-

URL 所對應的 Higress 後端服務完整名稱。

servicePort

number

必填

-

URL 所對應的 Higress 後端服務訪問連接埠。

customSettings的配置欄位說明如下:

名稱

資料類型

填寫要求

預設值

描述

name

string

必填

-

想要設定的參數的名稱,例如max_tokens

value

string/int/float/bool

必填

-

想要設定的參數的值,例如0。

mode

string

非必填

"auto"

參數設定的模式,可以設定為"auto"或者"raw",如果為"auto"則會自動根據協議對參數名做改寫,如果為"raw"則不會有任何改寫和限制檢查。

overwrite

bool

非必填

true

如果為false則只在使用者沒有設定這個參數時填充參數,否則會直接覆蓋使用者原有的參數設定。

customSettings會遵循如下表格,根據name和協議來替換對應的欄位,使用者需要填寫表格中settingName列中存在的值。例如使用者將name設定為max_tokens,在openai協議中會替換max_tokens,在gemini中會替換maxOutputTokensnone表示該協議不支援此參數。如果name不在此表格中或者對應協議不支援此參數,同時沒有設定raw模式,則配置不會生效。

settingName

openai

baidu

spark

qwen

gemini

hunyuan

claude

minimax

max_tokens

max_tokens

max_output_tokens

max_tokens

max_tokens

maxOutputTokens

none

max_tokens

tokens_to_generate

temperature

temperature

temperature

temperature

temperature

temperature

Temperature

temperature

temperature

top_p

top_p

top_p

none

top_p

topP

TopP

top_p

top_p

top_k

none

none

top_k

none

topK

none

top_k

none

seed

seed

none

none

seed

none

none

none

none

如果啟用了raw模式,customSetting會直接用輸入的namevalue去變更要求中的JSON內容,而不對參數名稱做任何限制和修改。 對於大多數協議,customSetting都會在JSON內容的根路徑修改或者填充參數。對於qwen協議,ai-proxy會在JSON的parameters子路徑下做配置。對於gemini協議,則會在generation_config子路徑下做配置。

供應商特有配置

OpenAI

OpenAI 所對應的 typeopenai。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

openaiCustomUrl

string

非必填

-

基於OpenAI協議的自訂後端URL,例如:www.example.com/myai/v1/chat/completions

responseJsonSchema

object

非必填

-

預先定義OpenAI響應需滿足的Json Schema, 注意目前僅特定的幾種模型支援該用法。

Azure OpenAI

Azure OpenAI 所對應的 typeazure。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

azureServiceUrl

string

必填

-

Azure OpenAI 服務的 URL,須包含 api-version 查詢參數。

重要

Azure OpenAI 只支援配置一個 API Token。

月之暗面(Moonshot)

月之暗面所對應的 typemoonshot。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

moonshotFileId

string

非必填

-

通過檔案介面上傳至月之暗面的檔案 ID,其內容將被用作AI 對話的上下文。不可與 context 欄位同時配置。

通義千問(Qwen)

通義千問所對應的 typeqwen。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

qwenEnableSearch

boolean

非必填

-

是否啟用通義千問內建的互連網搜尋功能。

qwenFileIds

array of string

非必填

-

通過檔案介面上傳至Dashscope的檔案 ID,其內容將被用作AI 對話的上下文。不可與 context 欄位同時配置。

百川智能 (Baichuan AI)

百川智能所對應的 typebaichuan 。它並無特有的配置欄位。

零一萬物(Yi)

零一萬物所對應的 typeyi。它並無特有的配置欄位。

智譜AI(Zhipu AI)

智譜AI所對應的 typezhipuai。它並無特有的配置欄位。

DeepSeek(DeepSeek)

DeepSeek所對應的 typedeepseek。它並無特有的配置欄位。

Groq

Groq 所對應的 typegroq。它並無特有的配置欄位。

文心一言(Baidu)

文心一言所對應的 typebaidu。它並無特有的配置欄位。

360智腦

360智腦所對應的typeai360。它並無特有的配置欄位。

Mistral

Mistral 所對應的typemistral。它並無特有的配置欄位。

MiniMax

MiniMax所對應的 typeminimax。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

minimaxGroupId

string

當使用abab6.5-chat, abab6.5s-chat, abab5.5s-chat, abab5.5-chat四種模型時必填

-

當使用abab6.5-chat, abab6.5s-chat, abab5.5s-chat, abab5.5-chat四種模型時會使用ChatCompletion Pro,需要設定groupID。

Anthropic Claude

Anthropic Claude 所對應的 typeclaude。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

claudeVersion

string

可選

-

Claude 服務的 API 版本,預設為 2023-06-01。

Ollama

Ollama 所對應的 typeollama。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

ollamaServerHost

string

必填

-

Ollama 伺服器的主機地址。

ollamaServerPort

number

必填

-

Ollama 伺服器的連接埠號碼,預設為11434。

混元

混元所對應的 typehunyuan。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

hunyuanAuthId

string

必填

-

混元用於v3版本認證的id。

hunyuanAuthKey

string

必填

-

混元用於v3版本認證的key。

階躍星辰 (Stepfun)

階躍星辰所對應的 typestepfun。它並無特有的配置欄位。

Cloudflare Workers AI

Cloudflare Workers AI 所對應的typecloudflare。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

cloudflareAccountId

string

必填

-

Cloudflare Account ID

星火 (Spark)

星火所對應的typespark。它並無特有的配置欄位。

訊飛星火認知大模型的apiTokens欄位值為APIKey:APISecret。即填入自己的APIKey與APISecret,並以:分隔。

Gemini

Gemini 所對應的typegemini。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

geminiSafetySetting

map of string

非必填

-

Gemini AI內容過濾和安全層級設定。參考Safety settings

DeepL

DeepL 所對應的typedeepl。它特有的配置欄位如下:

名稱

資料類型

填寫要求

預設值

描述

targetLang

string

必填

-

DeepL 翻譯服務需要的目標語種

Cohere

Cohere 所對應的typecohere。它並無特有的配置欄位。

用法樣本

使用 OpenAI 協議代理 Azure OpenAI 服務

使用最基本的 Azure OpenAI 服務,不配置任何上下文。

配置資訊

provider:
  type: azure
  apiTokens:
    - "YOUR_AZURE_OPENAI_API_TOKEN"
  azureServiceUrl: "https://YOUR_RESOURCE_NAME.openai.azure.com/openai/deployments/YOUR_DEPLOYMENT_NAME/chat/completions?api-version=2024-02-15-preview",

使用 OpenAI 協議代理通義千問服務

使用通義千問服務,並配置從 OpenAI 大模型到通義千問的模型映射關係。

配置資訊

provider:
  type: qwen
  apiTokens:
    - "YOUR_QWEN_API_TOKEN"
  modelMapping:
    'gpt-3': "qwen-turbo"
    'gpt-35-turbo': "qwen-plus"
    'gpt-4-turbo': "qwen-max"
    'gpt-4-*': "qwen-max"
    'gpt-4o': "qwen-vl-plus"
    'text-embedding-v1': 'text-embedding-v1'
    '*': "qwen-turbo"

使用original協議代理阿里雲百鍊智能體應用

配置資訊

provider:
  type: qwen
  apiTokens:
    - "YOUR_DASHSCOPE_API_TOKEN"
  protocol: original

使用 OpenAI 協議代理豆包大模型服務

配置資訊

provider:
  type: doubao
  apiTokens:
    - YOUR_DOUBAO_API_KEY
  modelMapping:
    '*': YOUR_DOUBAO_ENDPOINT
  timeout: 1200000

使用月之暗面配合其原生的檔案上下文

提前上傳檔案至月之暗面,以檔案內容作為上下文使用其 AI 服務。

配置資訊

provider:
  type: moonshot
  apiTokens:
    - "YOUR_MOONSHOT_API_TOKEN"
  moonshotFileId: "YOUR_MOONSHOT_FILE_ID",
  modelMapping:
    '*': "moonshot-v1-32k"

使用 OpenAI 協議代理 Groq 服務

配置資訊

provider:
  type: groq
  apiTokens:
    - "YOUR_GROQ_API_TOKEN"

使用 OpenAI 協議代理 Claude 服務

配置資訊

provider:
  type: claude
  apiTokens:
    - "YOUR_CLAUDE_API_TOKEN"
  version: "2023-06-01"

使用 OpenAI 協議代理混元服務

配置資訊

provider:
  type: "hunyuan"
  hunyuanAuthKey: "<YOUR AUTH KEY>"
  apiTokens:
    - ""
  hunyuanAuthId: "<YOUR AUTH ID>"
  timeout: 1200000
  modelMapping:
    "*": "hunyuan-lite"

使用 OpenAI 協議代理百度文心一言服務

配置資訊

provider:
  type: baidu
  apiTokens:
    - "YOUR_BAIDU_API_TOKEN"
  modelMapping:
    'gpt-3': "ERNIE-4.0"
    '*': "ERNIE-4.0"

使用 OpenAI 協議代理MiniMax服務

配置資訊

provider:
  type: minimax
  apiTokens:
    - "YOUR_MINIMAX_API_TOKEN"
  modelMapping:
    "gpt-3": "abab6.5g-chat"
    "gpt-4": "abab6.5-chat"
    "*": "abab6.5g-chat"
  minimaxGroupId: "YOUR_MINIMAX_GROUP_ID"

使用 OpenAI 協議代理360智腦服務

配置資訊

provider:
  type: ai360
  apiTokens:
    - "YOUR_MINIMAX_API_TOKEN"
  modelMapping:
    "gpt-4o": "360gpt-turbo-responsibility-8k"
    "gpt-4": "360gpt2-pro"
    "gpt-3.5": "360gpt-turbo"
    "text-embedding-3-small": "embedding_s1_v1.2"
    "*": "360gpt-pro"

使用 OpenAI 協議代理 Cloudflare Workers AI 服務

配置資訊

provider:
  type: cloudflare
  apiTokens:
    - "YOUR_WORKERS_AI_API_TOKEN"
  cloudflareAccountId: "YOUR_CLOUDFLARE_ACCOUNT_ID"
  modelMapping:
    "*": "@cf/meta/llama-3-8b-instruct"

使用 OpenAI 協議代理Spark服務

配置資訊

provider:
  type: spark
  apiTokens:
    - "APIKey:APISecret"
  modelMapping:
    "gpt-4o": "generalv3.5"
    "gpt-4": "generalv3"
    "*": "general"

使用 OpenAI 協議代理 gemini 服務

配置資訊

provider:
  type: gemini
  apiTokens:
    - "YOUR_GEMINI_API_TOKEN"
  modelMapping:
    "*": "gemini-pro"
  geminiSafetySetting:
    "HARM_CATEGORY_SEXUALLY_EXPLICIT" :"BLOCK_NONE"
    "HARM_CATEGORY_HATE_SPEECH" :"BLOCK_NONE"
    "HARM_CATEGORY_HARASSMENT" :"BLOCK_NONE"
    "HARM_CATEGORY_DANGEROUS_CONTENT" :"BLOCK_NONE"

使用 OpenAI 協議代理 DeepL 文本翻譯服務

配置資訊

provider:
  type: deepl
  apiTokens:
    - "YOUR_DEEPL_API_TOKEN"
  targetLang: "ZH"

請求樣本

此處model表示 DeepL 的服務類型,只能填FreeProcontent中設定需要翻譯的文本;在role: systemcontent中可以包含可能影響翻譯但本身不會被翻譯的上下文,例如翻譯產品名稱時,可以將產品描述作為上下文傳遞,這種額外的上下文可能會提高翻譯的品質。

{
  "model": "Free",
  "messages": [
    {
      "role": "system",
      "content": "money"
    },
    {
      "content": "sit by the bank"
    },
    {
      "content": "a bank in China"
    }
  ]
}

響應樣本

{
  "choices": [
    {
      "index": 0,
      "message": { "name": "EN", "role": "assistant", "content": "坐莊" }
    },
    {
      "index": 1,
      "message": { "name": "EN", "role": "assistant", "content": "中國銀行" }
    }
  ],
  "created": 1722747752,
  "model": "Free",
  "object": "chat.completion",
  "usage": {}
}