Skip to content

聊天补全

创建聊天补全,支持所有主流大模型。

接口地址

POST https://api.myopenhub.com/v1/llm/chat/completions

请求参数

Headers

http
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Body 参数

参数类型必填说明
modelstring模型名称,支持池前缀语法,如 gpt-4autoself:auto
messagesarray消息列表
temperaturenumber温度参数,0-2,默认 1
top_pnumber核采样参数,0-1,默认 1
max_tokensnumber最大生成 token 数
streamboolean是否流式返回,默认 false
stopstring/array停止词
presence_penaltynumber存在惩罚,-2 到 2
frequency_penaltynumber频率惩罚,-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
    }
  }
}

响应字段说明

字段类型说明
idstring请求 ID
objectstring对象类型,固定为 chat.completion
creatednumber创建时间戳
modelstring实际使用的模型
choicesarray生成结果列表
choices[].messageobject生成的消息
choices[].finish_reasonstring结束原因:stoplengthcontent_filter
usageobjectToken 使用情况
usage.prompt_tokensnumber输入 token 数
usage.completion_tokensnumber输出 token 数
usage.total_tokensnumber总 token 数

参数详解

temperature

控制输出的随机性:

  • 0: 确定性输出,每次结果相同
  • 0.7: 平衡创造性和一致性(推荐)
  • 1.0: 默认值
  • 2.0: 最大随机性
javascript
// 需要确定性输出(如代码生成)
temperature: 0

// 需要创造性输出(如写作)
temperature: 0.9

max_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-4

4. 控制对话历史长度

javascript
// ✅ 只保留最近的对话
const MAX_HISTORY = 10;
if (messages.length > MAX_HISTORY) {
  messages = [
    messages[0],  // 保留 system 消息
    ...messages.slice(-MAX_HISTORY)
  ];
}

下一步

Released under the MIT License.