模型配置指南
本文档介绍如何在 Coze Plus 中配置和管理大语言模型,包括添加新模型、配置参数、管理 API Key 等操作指南。
快速开始
5 分钟配置一个 OpenAI 模型
以配置 GPT-4o 模型为例:
步骤 1:获取 API Key
- 访问 OpenAI Platform
- 登录账号,进入 API Keys 页面
- 点击 "Create new secret key"
- 复制生成的 API Key(格式:
sk-...)
步骤 2:修改模型配置文件
在 backend/conf/model/template/ 目录找到 model_template_openai.yaml,复制并重命名为 model_gpt4o.yaml:
id: 69010
name: GPT-4o
icon_uri: default_icon/openai_v2.png
description:
zh: GPT-4o 多模态模型
en: GPT-4o multi-modal model
meta:
protocol: openai
capability:
function_call: true
input_modal: [text, image]
input_tokens: 128000
output_tokens: 16384
conn_config:
base_url: "https://api.openai.com/v1"
api_key: "sk-your-api-key-here" # 填入你的 API Key
model: "gpt-4o" # 模型名称
temperature: 0.7
max_tokens: 4096步骤 3:重启服务
# 重启 Coze Plus 后端服务
make server步骤 4:验证配置
验证方法:
- 打开 Coze Plus 前端界面
- 创建一个新的智能体
- 在模型选择下拉框中选择新配置的 GPT-4o 模型
- 发送测试消息,验证模型响应是否正常
完成!现在可以在智能体中使用 GPT-4o 模型了。
通过管理界面配置模型
推荐方式:Coze Plus 提供了可视化的后台管理界面来配置模型,无需手动编辑 YAML 文件,更加直观和安全。
界面配置优势
✅ 图形化操作:通过表单界面填写配置,无需了解 YAML 语法 ✅ 实时验证:创建模型时自动测试连接,确保配置正确 ✅ 安全加密:API Key 自动加密存储在数据库中 ✅ 动态管理:无需重启服务即可添加、删除模型 ✅ 权限控制:仅管理员可访问模型配置页面
5 分钟通过界面添加模型
以添加 GPT-4o 模型为例:
步骤 1:访问管理后台
- 登录 Coze Plus
- 点击右上角头像,选择 "管理后台" 或 "系统设置"
- 在左侧菜单中选择 "模型管理" > "LLM 模型"
步骤 2:创建新模型
点击页面右上角的 "添加模型" 按钮,进入创建表单。
步骤 3:选择模型提供商
在 "提供商" 下拉框中选择 "OpenAI"。系统会显示该提供商支持的所有模型。
步骤 4:填写模型信息
基本信息:
- 模型名称:GPT-4o(自定义显示名称)
- 模型类型:LLM(大语言模型)
连接配置:
- API 端点 (Base URL):
https://api.openai.com/v1 - API Key:
sk-your-openai-api-key-here - 模型名称 (Model):
gpt-4o
可选配置:
- Temperature:0.7
- Max Tokens:4096
- Top P:1.0
高级选项(根据需要填写):
- 使用 Azure OpenAI:否(默认)
- 启用 Base64 URL 支持:否(默认)
步骤 5:测试连接
点击 "测试连接" 按钮,系统会:
- 使用填写的配置构建模型客户端
- 发送测试消息:"1+1=?, Just answer with a number"
- 验证模型是否正常响应
测试成功:
✓ 模型连接成功
响应时间: 1.2s
测试响应: 2测试失败示例:
✗ 模型连接失败
错误信息: Incorrect API key provided
请检查 API Key 是否正确步骤 6:保存配置
测试通过后,点击 "保存" 按钮。系统会:
- 加密 API Key(使用 AES-256)
- 将配置保存到数据库
model_instance表 - 立即生效,无需重启服务
保存成功提示:
✓ 模型创建成功
模型 ID: 10001
现在可以在智能体中使用 GPT-4o 了步骤 7:验证模型
- 返回 "模型管理" 列表页
- 在 "OpenAI" 分组下找到新创建的 "GPT-4o"
- 状态显示为 "使用中" ✓
- 创建智能体时可在模型下拉框中选择该模型
管理界面功能
查看模型列表
API 接口:
GET /api/admin/config/model/list请求示例:
curl -X GET http://localhost:8888/api/admin/config/model/list \
-H "Authorization: Bearer admin-token" \
-H "Content-Type: application/json"响应示例:
{
"code": 0,
"msg": "success",
"provider_model_list": [
{
"provider": {
"name": {
"zh_cn": "OpenAI",
"en_us": "OpenAI"
},
"icon_uri": "default_icon/openai_v2.png",
"model_class": "GPT"
},
"model_list": [
{
"id": 10001,
"display_info": {
"name": "GPT-4o",
"output_tokens": 16384,
"max_tokens": 128000
},
"capability": {
"function_call": true,
"input_modal": ["text", "image"],
"input_tokens": 128000,
"output_tokens": 16384
},
"status": 1,
"enable_base64_url": false
}
]
}
]
}界面会将模型按提供商分组展示:
┌─────────────────────────────────────────┐
│ OpenAI │
├─────────────────────────────────────────┤
│ ○ GPT-4o [编辑] [删除]│
│ 输入: 128K tokens | 输出: 16K tokens │
│ 支持: 函数调用, 多模态(文本+图像) │
│ 状态: ✓ 使用中 │
│ │
│ ○ GPT-4o-mini [编辑] [删除]│
│ 输入: 128K tokens | 输出: 16K tokens │
│ 状态: ✓ 使用中 │
├─────────────────────────────────────────┤
│ Claude │
├─────────────────────────────────────────┤
│ ○ Claude-3.5-Sonnet [编辑] [删除]│
│ 输入: 200K tokens | 输出: 8K tokens │
│ 支持: 前缀缓存, 预填充响应 │
│ 状态: ✓ 使用中 │
└─────────────────────────────────────────┘创建模型
API 接口:
POST /api/admin/config/model/create请求参数:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
model_class | string | 是 | 模型类型:GPT/Claude/Gemini/DeepSeek/Qwen/Ollama/Ark |
model_name | string | 是 | 模型显示名称 |
connection | object | 是 | 连接配置对象 |
connection.base_conn_info | object | 是 | 基础连接信息 |
connection.base_conn_info.base_url | string | 是 | API 端点 URL |
connection.base_conn_info.api_key | string | 是 | API 密钥 |
connection.base_conn_info.model | string | 是 | 模型名称(如 gpt-4o) |
connection.openai | object | 否 | OpenAI 特定配置 |
connection.openai.by_azure | boolean | 否 | 是否使用 Azure OpenAI |
connection.openai.api_version | string | 否 | API 版本(Azure 需要) |
enable_base64_url | boolean | 否 | 是否启用 Base64 URL 支持 |
请求示例:
curl -X POST http://localhost:8888/api/admin/config/model/create \
-H "Authorization: Bearer admin-token" \
-H "Content-Type: application/json" \
-d '{
"model_class": "GPT",
"model_name": "GPT-4o",
"connection": {
"base_conn_info": {
"base_url": "https://api.openai.com/v1",
"api_key": "sk-your-api-key-here",
"model": "gpt-4o"
},
"openai": {
"by_azure": false,
"request_dims": 0
}
},
"enable_base64_url": false
}'响应示例:
{
"code": 0,
"msg": "success",
"id": "10001"
}创建流程说明:
- 参数验证:检查必填字段、URL 格式、API Key 格式
- 模型构建:根据
model_class创建对应的模型 Builder - 连接测试:发送测试消息验证模型可用性go
// 测试消息 testMessage := "1+1=?, Just answer with a number, no explanation." - 加密存储:使用 AES-256 加密 API Key
- 持久化:保存到
model_instance表并返回模型 ID
源码位置:backend/api/handler/coze/config_service.go:170
删除模型
API 接口:
POST /api/admin/config/model/delete请求示例:
curl -X POST http://localhost:8888/api/admin/config/model/delete \
-H "Authorization: Bearer admin-token" \
-H "Content-Type: application/json" \
-d '{
"id": "10001"
}'响应示例:
{
"code": 0,
"msg": "success"
}删除规则:
- 模型状态更新为
StatusDeleted(2) - 不会物理删除记录,仅软删除
- 删除后在智能体中不再可选
- 已使用该模型的智能体不受影响(历史记录保留)
源码位置:backend/api/handler/coze/config_service.go:221
不同提供商配置示例
OpenAI / Azure OpenAI
标准 OpenAI:
{
"model_class": "GPT",
"model_name": "GPT-4o",
"connection": {
"base_conn_info": {
"base_url": "https://api.openai.com/v1",
"api_key": "sk-...",
"model": "gpt-4o"
},
"openai": {
"by_azure": false
}
}
}Azure OpenAI:
{
"model_class": "GPT",
"model_name": "GPT-4o (Azure)",
"connection": {
"base_conn_info": {
"base_url": "https://your-resource.openai.azure.com",
"api_key": "azure-api-key",
"model": "gpt-4o-deployment-name"
},
"openai": {
"by_azure": true,
"api_version": "2024-02-01"
}
}
}Claude (Anthropic)
{
"model_class": "Claude",
"model_name": "Claude-3.5-Sonnet",
"connection": {
"base_conn_info": {
"base_url": "https://api.anthropic.com/v1/",
"api_key": "sk-ant-...",
"model": "claude-3-5-sonnet-20241022"
},
"claude": {}
}
}Google Gemini
{
"model_class": "Gemini",
"model_name": "Gemini-1.5-Pro",
"connection": {
"base_conn_info": {
"base_url": "https://generativelanguage.googleapis.com/v1",
"api_key": "your-google-api-key",
"model": "gemini-1.5-pro"
},
"gemini": {
"backend": 1
}
}
}DeepSeek
{
"model_class": "DeepSeek",
"model_name": "DeepSeek-V3",
"connection": {
"base_conn_info": {
"base_url": "https://api.deepseek.com/v1",
"api_key": "sk-...",
"model": "deepseek-chat"
},
"deepseek": {}
}
}Alibaba Qwen
{
"model_class": "Qwen",
"model_name": "Qwen-Max",
"connection": {
"base_conn_info": {
"base_url": "https://dashscope.aliyuncs.com/api/v1",
"api_key": "sk-...",
"model": "qwen-max"
},
"qwen": {}
}
}Ollama (本地)
{
"model_class": "Ollama",
"model_name": "Llama-3.3-70B",
"connection": {
"base_conn_info": {
"base_url": "http://host.docker.internal:11434",
"api_key": "",
"model": "llama3.3:70b"
},
"ollama": {}
}
}ByteDance Ark
{
"model_class": "Ark",
"model_name": "Doubao-1.5-Pro",
"connection": {
"base_conn_info": {
"base_url": "https://ark.cn-beijing.volces.com/api/v3",
"api_key": "your-ark-api-key",
"model": "doubao-pro-128k"
},
"ark": {
"region": "cn-beijing",
"api_type": ""
}
}
}界面配置 vs 文件配置
| 对比维度 | 界面配置 | 文件配置 |
|---|---|---|
| 操作难度 | ⭐⭐⭐⭐⭐ 图形化表单 | ⭐⭐⭐ 需要了解 YAML 语法 |
| 实时验证 | ✅ 创建时自动测试连接 | ❌ 需手动测试 |
| 安全性 | ✅ API Key 自动加密 | ⚠️ 明文存储或需手动管理 |
| 生效速度 | ✅ 立即生效,无需重启 | ❌ 需重启服务 |
| 适用场景 | 生产环境、运维管理 | 开发环境、批量配置 |
| 版本控制 | ❌ 存储在数据库 | ✅ 可提交到 Git |
| 批量操作 | ⚠️ 需逐个创建 | ✅ 支持脚本批量生成 |
| 权限控制 | ✅ 仅管理员可访问 | ⚠️ 依赖文件系统权限 |
推荐使用场景:
✅ 使用界面配置:
- 生产环境添加新模型
- 运维人员日常管理
- 需要快速验证配置
- 敏感信息安全要求高
✅ 使用文件配置:
- 开发环境快速测试
- 批量配置多个模型
- CI/CD 自动化部署
- 需要版本控制配置
常见问题
Q1: 界面创建的模型在哪里存储?
答:存储在数据库 model_instance 表中,结构如下:
CREATE TABLE `model_instance` (
`id` bigint NOT NULL AUTO_INCREMENT,
`provider` varchar(50) NOT NULL,
`model_class` varchar(50) NOT NULL,
`display_info` json NOT NULL,
`capability` json NOT NULL,
`connection` json NOT NULL, -- API Key 已加密
`type` int NOT NULL DEFAULT '0',
`parameters` json DEFAULT NULL,
`status` int NOT NULL DEFAULT '1',
`enable_base64_url` tinyint(1) DEFAULT '0',
`created_at` bigint NOT NULL,
`updated_at` bigint NOT NULL,
`delete_at_ms` bigint DEFAULT '0',
PRIMARY KEY (`id`)
);查询示例:
-- 查看所有模型(不显示加密的 API Key)
SELECT id, provider, model_class,
JSON_EXTRACT(display_info, '$.name') AS name,
status
FROM model_instance
WHERE status != 2; -- 2 = StatusDeleted源码位置:backend/bizpkg/config/modelmgr/modelmgr.go:38
Q2: 如何在界面和文件配置之间切换?
答:两种配置方式可以共存:
- 文件配置 的模型从 YAML 文件加载到内存
- 界面配置 的模型从数据库加载
- 系统启动时会合并两者,按 ID 去重(数据库优先)
加载顺序:
- 加载
backend/conf/model/template/*.yaml文件 - 加载数据库
model_instance表 - 合并模型列表(ID 冲突时数据库配置覆盖文件配置)
ID 规划建议:
- 文件配置:使用 60000-69999 范围
- 界面配置:使用 10000-59999 范围(系统自动分配)
Q3: API Key 如何加密存储?
答:使用 AES-256-CBC 加密算法:
加密流程:
go// 生成密钥(从环境变量或配置文件) key := []byte("your-32-byte-encryption-key-here") // 加密 API Key encryptedKey := aes.Encrypt(apiKey, key) // 存储到数据库 connection := {"api_key": encryptedKey}解密流程:
go// 从数据库读取 connection := loadFromDB() // 解密 API Key apiKey := aes.Decrypt(connection.APIKey, key) // 使用明文 API Key 调用模型
安全建议:
- 加密密钥存储在环境变量
MODEL_ENCRYPTION_KEY中 - 定期轮换加密密钥
- 数据库备份时确保加密密钥同步备份
源码位置:backend/bizpkg/config/modelmgr/model_meta.go
Q4: 测试连接失败怎么办?
常见错误及解决方案:
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
Incorrect API key provided | API Key 无效 | 检查 API Key 格式和有效期 |
Connection timeout | 网络超时 | 检查网络连接和 base_url |
Model not found | 模型名称错误 | 确认 model 字段与提供商文档一致 |
Rate limit exceeded | API 调用频率超限 | 稍后重试或升级套餐 |
Invalid base_url | URL 格式错误 | 确保 URL 包含协议(http/https) |
调试步骤:
- 在浏览器开发者工具中查看网络请求
- 检查后端日志:
tail -f logs/coze-plus.log | grep "model" - 使用 curl 直接测试 API:bash
curl https://api.openai.com/v1/chat/completions \ -H "Authorization: Bearer sk-..." \ -H "Content-Type: application/json" \ -d '{"model":"gpt-4o","messages":[{"role":"user","content":"test"}]}'
Q5: 如何迁移文件配置到界面?
迁移步骤:
导出现有配置:
bash# 列出所有 YAML 配置 ls backend/conf/model/template/*.yaml逐个迁移:
- 打开管理界面
- 点击 "添加模型"
- 按照 YAML 配置填写表单
- 测试连接并保存
验证迁移:
bash# 检查数据库 mysql -u root -p coze_plus -e \ "SELECT id, JSON_EXTRACT(display_info, '$.name') AS name FROM model_instance;"清理文件配置(可选):
bash# 备份原文件 mkdir -p backup/model_configs cp backend/conf/model/template/*.yaml backup/model_configs/ # 删除已迁移的文件 rm backend/conf/model/template/model_gpt4o.yaml
批量迁移脚本(参考):
#!/bin/bash
# migrate_models.sh
API_BASE="http://localhost:8888/api/admin/config/model"
TOKEN="admin-token"
for yaml_file in backend/conf/model/template/*.yaml; do
echo "Migrating $yaml_file..."
# 解析 YAML 并转换为 JSON(需要 yq 工具)
json_data=$(yq eval -o=json "$yaml_file")
# 调用创建 API
curl -X POST "$API_BASE/create" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "$json_data"
echo "✓ Migrated $yaml_file"
done配置文件详解
基本信息
id: 69010 # 模型 ID,必须唯一
name: GPT-4o # 显示名称
icon_uri: default_icon/openai_v2.png # 图标路径
icon_url: "" # 外部图标 URL(可选)
description: # 模型描述(支持多语言)
zh: GPT-4o 是一个多模态模型,支持文本和图像输入
en: GPT-4o is a multi-modal model supporting text and image inputs模型参数
default_parameters:
- name: temperature # 参数名称
label: # 显示标签
zh: 生成随机性
en: Temperature
desc: # 参数说明
zh: 控制输出的多样性和创造性
en: Controls output diversity and creativity
type: float # 参数类型:float | int | string
min: "0" # 最小值
max: "1" # 最大值
default_val: # 默认值(支持预设)
balance: "0.8" # 平衡模式
creative: "1" # 创造模式
default_val: "1.0" # 默认值
precise: "0.3" # 精确模式
precision: 1 # 小数精度
options: [] # 选项列表(用于枚举类型)
style: # 前端UI样式
widget: slider # 组件类型:slider | input | radio_buttons
label: # 组件分组标签
zh: 生成多样性
en: Generation diversity模型能力
meta:
protocol: openai # 协议类型
capability:
function_call: true # 是否支持函数调用
input_modal: # 输入模态
- text # 支持文本
- image # 支持图像
input_tokens: 128000 # 输入 Token 上限
json_mode: false # 是否支持 JSON 模式
max_tokens: 128000 # 总 Token 上限
output_modal: # 输出模态
- text
output_tokens: 16384 # 输出 Token 上限
prefix_caching: false # 是否支持前缀缓存
reasoning: false # 是否支持推理模式
prefill_response: false # 是否支持预填充响应连接配置
meta:
conn_config:
base_url: "https://api.openai.com/v1" # API 端点
api_key: "" # API 密钥(敏感信息)
timeout: 0s # 超时时间(0 表示使用默认)
model: "" # 模型名称(如 gpt-4o)
temperature: 0.7 # 默认温度
frequency_penalty: 0 # 频率惩罚
presence_penalty: 0 # 存在惩罚
max_tokens: 4096 # 最大输出 Token
top_p: 1 # Top P 采样
top_k: 0 # Top K 采样
stop: [] # 停止词列表
# OpenAI 特定配置
openai:
by_azure: false # 是否使用 Azure OpenAI
api_version: "" # API 版本(Azure 需要)
response_format: # 响应格式
type: text # text | json_object
jsonschema: null # JSON Schema(可选)
custom: {} # 自定义配置
status: 0 # 状态:0-正常 1-禁用配置不同提供商
OpenAI / Azure OpenAI
标准 OpenAI
id: 69010
name: GPT-4o
meta:
protocol: openai
conn_config:
base_url: "https://api.openai.com/v1"
api_key: "sk-..."
model: "gpt-4o"
openai:
by_azure: falseAzure OpenAI
id: 69020
name: GPT-4o (Azure)
meta:
protocol: openai
conn_config:
base_url: "https://your-resource.openai.azure.com"
api_key: "azure-api-key"
model: "gpt-4o-deployment-name"
openai:
by_azure: true
api_version: "2024-02-01"Claude (Anthropic)
标准 Claude API
id: 65010
name: Claude-3.5-Sonnet
meta:
protocol: claude
capability:
function_call: true
input_modal: [text, image]
input_tokens: 200000
output_tokens: 8192
prefix_caching: true # Claude 支持前缀缓存
prefill_response: true # Claude 支持预填充
conn_config:
base_url: "https://api.anthropic.com/v1/"
api_key: "sk-ant-..."
model: "claude-3-5-sonnet-20241022"
claude:
by_bedrock: falseAWS Bedrock Claude
id: 65020
name: Claude-3.5-Sonnet (Bedrock)
meta:
protocol: claude
conn_config:
base_url: ""
api_key: ""
model: "anthropic.claude-3-5-sonnet-20241022-v2:0"
claude:
by_bedrock: true
access_key: "AWS_ACCESS_KEY_ID"
secret_access_key: "AWS_SECRET_ACCESS_KEY"
session_token: "" # 可选
region: "us-west-2"Google Gemini
id: 67010
name: Gemini-Pro
meta:
protocol: gemini
capability:
function_call: true
input_modal: [text, image, audio, video]
input_tokens: 1000000 # 1M 上下文
output_tokens: 8192
conn_config:
base_url: "https://generativelanguage.googleapis.com/v1"
api_key: "your-google-api-key"
model: "gemini-1.5-pro"
temperature: 0.7DeepSeek
DeepSeek V3
id: 62010
name: DeepSeek-V3
meta:
protocol: deepseek
capability:
function_call: true
input_modal: [text]
input_tokens: 64000
output_tokens: 8192
conn_config:
base_url: "https://api.deepseek.com/v1"
api_key: "sk-..."
model: "deepseek-chat"DeepSeek-R1 (推理模式)
id: 62020
name: DeepSeek-R1
meta:
protocol: deepseek
capability:
function_call: false
input_modal: [text]
input_tokens: 64000
output_tokens: 8192
reasoning: true # 支持 Chain-of-Thought 推理
conn_config:
base_url: "https://api.deepseek.com/v1"
api_key: "sk-..."
model: "deepseek-reasoner"Alibaba Qwen (通义千问)
id: 64010
name: Qwen-Max
meta:
protocol: qwen
capability:
function_call: true
input_modal: [text]
input_tokens: 32000
output_tokens: 8192
conn_config:
base_url: "https://dashscope.aliyuncs.com/api/v1"
api_key: "sk-..."
model: "qwen-max"Ollama (本地部署)
id: 68010
name: Llama-3.3-70B
meta:
protocol: ollama
capability:
function_call: true
input_modal: [text]
input_tokens: 128000
output_tokens: 4096
conn_config:
base_url: "http://host.docker.internal:11434" # Docker 环境
# base_url: "http://localhost:11434" # 本地环境
api_key: "" # Ollama 不需要 API Key
model: "llama3.3:70b"
temperature: 0.6
top_k: 20注意事项:
- Docker 环境使用
host.docker.internal访问宿主机 - 本地环境使用
localhost或127.0.0.1 - 确保 Ollama 服务已启动:
ollama serve
ByteDance Ark (字节豆包)
id: 60010
name: Doubao-1.5-Pro
meta:
protocol: ark
capability:
function_call: true
input_modal: [text, image]
input_tokens: 128000
output_tokens: 8192
conn_config:
base_url: "https://ark.cn-beijing.volces.com/api/v3"
api_key: "your-ark-api-key"
model: "doubao-pro-128k"参数UI组件
Coze Plus 支持多种前端UI组件来展示和调整模型参数:
1. Slider(滑块)
适用于连续数值参数,如 temperature、top_p 等:
- name: temperature
type: float
min: "0"
max: "1"
default_val:
default_val: "0.7"
precision: 1
style:
widget: slider
label:
zh: 生成多样性
en: Generation diversity前端效果:
生成多样性
Temperature [0.7]
|----●-----|
0 12. Input(输入框)
适用于整数参数,如 max_tokens:
- name: max_tokens
type: int
min: "1"
max: "4096"
default_val:
default_val: "4096"
style:
widget: input前端效果:
Max Tokens
┌─────────┐
│ 4096 │
└─────────┘3. Radio Buttons(单选按钮)
适用于枚举类型参数,如 response_format:
- name: response_format
type: int
default_val:
default_val: "0"
options:
- label: Text
value: "0"
- label: Markdown
value: "1"
- label: JSON
value: "2"
style:
widget: radio_buttons前端效果:
Response Format
○ Text ● Markdown ○ JSON4. Select(下拉选择)
适用于较多选项的枚举:
- name: model_variant
type: string
default_val:
default_val: "standard"
options:
- label: Standard
value: "standard"
- label: Turbo
value: "turbo"
- label: Premium
value: "premium"
style:
widget: select管理 API Key
环境变量方式(推荐)
在 .env 文件或系统环境变量中配置:
# .env
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=...
DEEPSEEK_API_KEY=sk-...
QWEN_API_KEY=sk-...在配置文件中引用:
conn_config:
api_key: "${OPENAI_API_KEY}" # 引用环境变量优点:
- 敏感信息不提交到代码仓库
- 便于不同环境切换
- 符合安全最佳实践
配置文件方式
直接在 YAML 文件中填写(仅开发测试使用):
conn_config:
api_key: "sk-..."注意:
- ⚠️ 不要将包含真实 API Key 的配置文件提交到 Git
- ⚠️ 生产环境必须使用环境变量
数据库加密存储
通过管理界面创建的模型实例,API Key 会自动加密存储在数据库中:
SELECT id, provider, display_info
FROM model_instance
WHERE id = 1;
-- connection 字段中的 api_key 已加密
-- {"api_key": "AES加密后的密文"}测试模型配置
方法 1:命令行测试
# 进入后端目录
cd backend
# 运行测试命令
go run cmd/test/model_test.go \
--model-id=69010 \
--prompt="你好,请介绍一下自己"方法 2:API 测试
curl -X POST http://localhost:8888/api/conversation/chat \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-access-token" \
-d '{
"bot_id": "your-bot-id",
"user_id": "test-user",
"additional_messages": [
{
"role": "user",
"content": "什么是大语言模型?",
"content_type": "text"
}
],
"stream": false
}'方法 3:前端测试
- 打开 Coze Plus 前端界面
- 创建一个新的智能体
- 在模型选择下拉框中选择新配置的模型
- 发送测试消息
- 验证响应是否正常
常见问题
Q1: 模型配置后不显示怎么办?
可能原因:
- 配置文件格式错误
- ID 重复
- 服务未重启
解决方案:
# 1. 验证 YAML 格式
yamllint model_gpt4o.yaml
# 2. 检查 ID 唯一性
grep -r "^id: 69010" backend/conf/model/template/
# 3. 重启服务
make server
# 4. 查看日志
tail -f logs/coze-plus.log | grep "model"Q2: API Key 无效错误
错误信息:
Error: Incorrect API key provided解决方案:
- 确认 API Key 格式正确
- 检查 API Key 是否过期
- 验证 API Key 权限
- 确认 base_url 正确
Q3: 模型响应超时
错误信息:
Error: Request timeout after 60s解决方案:
调整超时配置:
conn_config:
timeout: 120s # 延长到 120 秒或在代码中设置:
client := &http.Client{
Timeout: 120 * time.Second,
}Q4: 本地 Ollama 连接失败
错误信息:
Error: dial tcp 127.0.0.1:11434: connect: connection refused解决方案:
- 检查 Ollama 服务状态:
# 检查服务是否运行
ps aux | grep ollama
# 启动 Ollama 服务
ollama serve- Docker 环境修改 URL:
conn_config:
base_url: "http://host.docker.internal:11434"- 拉取模型:
ollama pull llama3.3:70bQ5: Token 超限错误
错误信息:
Error: This model's maximum context length is 8192 tokens解决方案:
- 减少输入内容长度
- 调整 max_tokens:
conn_config:
max_tokens: 2000 # 减小输出长度- 切换到支持更长上下文的模型
Q6: 多模态输入不生效
问题:发送图片后模型无法识别
解决方案:
- 确认模型支持多模态:
capability:
input_modal: [text, image] # 必须包含 image- 启用 Base64 URL 支持(部分模型需要):
meta:
enable_base64_url: true- 确认图片格式和大小符合限制
高级配置
自定义 HTTP Headers
某些模型提供商需要额外的 HTTP Headers:
conn_config:
custom:
headers:
X-Custom-Header: "value"
User-Agent: "CozeP lus/1.0"代理配置
通过代理访问模型 API:
# 设置环境变量
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080
export NO_PROXY=localhost,127.0.0.1或在配置中指定:
conn_config:
custom:
proxy: "http://proxy.example.com:8080"重试策略
配置请求失败重试:
conn_config:
custom:
retry:
max_attempts: 3
initial_interval: 1s
max_interval: 10s
multiplier: 2日志级别
调整模型调用日志级别:
conn_config:
custom:
log_level: "debug" # debug | info | warn | error批量配置
如果需要配置多个同类型模型,可以使用脚本批量生成:
#!/bin/bash
# generate_models.sh
MODELS=("gpt-4o" "gpt-4o-mini" "gpt-4-turbo")
BASE_ID=69000
for i in "${!MODELS[@]}"; do
MODEL_NAME="${MODELS[$i]}"
MODEL_ID=$((BASE_ID + i + 10))
cat > "model_${MODEL_NAME}.yaml" << EOF
id: ${MODEL_ID}
name: ${MODEL_NAME}
icon_uri: default_icon/openai_v2.png
description:
zh: ${MODEL_NAME} 模型
en: ${MODEL_NAME} model
meta:
protocol: openai
conn_config:
base_url: "https://api.openai.com/v1"
api_key: "\${OPENAI_API_KEY}"
model: "${MODEL_NAME}"
temperature: 0.7
max_tokens: 4096
EOF
echo "Generated model_${MODEL_NAME}.yaml"
done运行脚本:
chmod +x generate_models.sh
./generate_models.sh最佳实践
DO(推荐做法)
✅ 使用环境变量管理敏感信息
api_key: "${OPENAI_API_KEY}"✅ 为不同环境使用不同配置
- model_gpt4o_dev.yaml # 开发环境
- model_gpt4o_prod.yaml # 生产环境✅ 配置合理的超时时间
conn_config:
timeout: 60s # 根据实际网络情况调整✅ 启用详细日志便于排查问题
conn_config:
custom:
log_level: "debug"✅ 定期更新模型配置
# 检查新版本
curl https://api.openai.com/v1/models
# 更新配置
vim model_gpt4o.yamlDON'T(避免做法)
❌ 硬编码 API Key
# 不要这样
api_key: "sk-1234567890abcdef"❌ 忽略模型能力声明
# 不要忘记配置
capability:
function_call: true # 如果不支持,设为 false❌ 使用错误的 model 名称
# 不要这样
model: "gpt4" # 错误,应该是 "gpt-4o"❌ 忽略 Token 限制
# 不要超过实际限制
max_tokens: 999999 # 会导致错误❌ 混用不同协议的配置
# 不要这样(claude 模型使用 openai 协议)
protocol: openai
model: "claude-3-5-sonnet" # 错误参考资源
官方文档
相关文档
最后更新时间:2025-10-27
文档版本:v1.0.0
如有任何疑问或需要帮助,请联系:
- 📧 邮箱:support@coze-plus.cn
- 💬 交流群:参见项目概述
