聊天补全
创建聊天补全,支持所有主流大模型。
接口地址
POST https://api.myopenhub.com/v1/llm/chat/completions请求参数
Headers
http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonBody 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名称,支持池前缀语法,如 gpt-4、auto、self:auto |
messages | array | 是 | 消息列表 |
temperature | number | 否 | 温度参数,0-2,默认 1 |
top_p | number | 否 | 核采样参数,0-1,默认 1 |
max_tokens | number | 否 | 最大生成 token 数 |
stream | boolean | 否 | 是否流式返回,默认 false |
stop | string/array | 否 | 停止词 |
presence_penalty | number | 否 | 存在惩罚,-2 到 2 |
frequency_penalty | number | 否 | 频率惩罚,-2 到 2 |
messages 格式
json
{
"messages": [
{
"role": "system",
"content": "你是一个有帮助的助手"
},
{
"role": "user",
"content": "介绍一下北京"
},
{
"role": "assistant",
"content": "北京是中国的首都..."
},
{
"role": "user",
"content": "它有哪些著名景点?"
}
]
}角色说明:
system: 系统提示词,设置助手行为user: 用户消息assistant: 助手回复(用于多轮对话)
请求示例
cURL
bash
curl https://api.myopenhub.com/v1/llm/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "你是一个专业的旅游顾问"
},
{
"role": "user",
"content": "推荐北京三日游路线"
}
],
"temperature": 0.7,
"max_tokens": 2000
}'Python
python
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.myopenhub.com/v1"
)
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "你是一个专业的旅游顾问"},
{"role": "user", "content": "推荐北京三日游路线"}
],
temperature=0.7,
max_tokens=2000
)
print(response.choices[0].message.content)Node.js
javascript
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.myopenhub.com/v1'
});
const response = await client.chat.completions.create({
model: 'gpt-4',
messages: [
{ role: 'system', content: '你是一个专业的旅游顾问' },
{ role: 'user', content: '推荐北京三日游路线' }
],
temperature: 0.7,
max_tokens: 2000
});
console.log(response.choices[0].message.content);响应格式
成功响应
json
{
"success": true,
"data": {
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"model": "gpt-4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "北京三日游推荐路线:\n\n第一天:天安门广场..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 56,
"completion_tokens": 324,
"total_tokens": 380
}
}
}响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 请求 ID |
object | string | 对象类型,固定为 chat.completion |
created | number | 创建时间戳 |
model | string | 实际使用的模型 |
choices | array | 生成结果列表 |
choices[].message | object | 生成的消息 |
choices[].finish_reason | string | 结束原因:stop、length、content_filter |
usage | object | Token 使用情况 |
usage.prompt_tokens | number | 输入 token 数 |
usage.completion_tokens | number | 输出 token 数 |
usage.total_tokens | number | 总 token 数 |
参数详解
temperature
控制输出的随机性:
0: 确定性输出,每次结果相同0.7: 平衡创造性和一致性(推荐)1.0: 默认值2.0: 最大随机性
javascript
// 需要确定性输出(如代码生成)
temperature: 0
// 需要创造性输出(如写作)
temperature: 0.9max_tokens
限制输出长度:
javascript
// 短回答
max_tokens: 100
// 中等长度
max_tokens: 500
// 长文章
max_tokens: 2000提示
不设置 max_tokens 时,模型会生成到自然结束点。
stop
设置停止词,遇到时停止生成:
javascript
// 单个停止词
stop: "\n\n"
// 多个停止词
stop: ["\n\n", "###", "END"]presence_penalty 和 frequency_penalty
控制重复性:
javascript
// 减少重复(推荐)
presence_penalty: 0.6
frequency_penalty: 0.5
// 允许重复
presence_penalty: 0
frequency_penalty: 0多轮对话
保存对话历史,实现多轮对话:
javascript
const messages = [
{ role: 'system', content: '你是一个有帮助的助手' }
];
// 第一轮
messages.push({ role: 'user', content: '北京有哪些景点?' });
let response = await client.chat.completions.create({
model: 'auto',
messages
});
messages.push(response.choices[0].message);
// 第二轮
messages.push({ role: 'user', content: '故宫门票多少钱?' });
response = await client.chat.completions.create({
model: 'auto',
messages
});
messages.push(response.choices[0].message);最佳实践
1. 使用 system 消息
javascript
// ✅ 推荐:使用 system 消息设置行为
messages: [
{ role: 'system', content: '你是一个专业的 Python 工程师' },
{ role: 'user', content: '如何优化这段代码?' }
]
// ❌ 不推荐:在 user 消息中说明
messages: [
{ role: 'user', content: '你是一个 Python 工程师,帮我优化代码' }
]2. 设置合理的 max_tokens
javascript
// ✅ 根据需求设置
max_tokens: 500 // 短回答
// ❌ 不设置或设置过大
max_tokens: 4096 // 可能浪费3. 使用智能路由
javascript
// ✅ 使用智能路由节省成本
model: 'auto'
// ❌ 固定使用昂贵模型
model: 'gpt-4' // 所有任务都用 GPT-44. 控制对话历史长度
javascript
// ✅ 只保留最近的对话
const MAX_HISTORY = 10;
if (messages.length > MAX_HISTORY) {
messages = [
messages[0], // 保留 system 消息
...messages.slice(-MAX_HISTORY)
];
}