创建聊天补全请求,支持多轮对话和流式响应。
- 接口地址:
POST /v1/chat/completions - 认证方式: Bearer Token
- Content-Type: application/json
| 参数 | 类型 | 说明 |
|---|
| model | string | 模型名称 |
| messages | array | 消息列表 |
| 参数 | 类型 | 默认值 | 说明 |
|---|
| temperature | number | 1.0 | 采样温度,范围 0-2 |
| top_p | number | 1.0 | 核采样参数,范围 0-1 |
| n | integer | 1 | 生成回复数量 |
| stream | boolean | false | 是否流式返回 |
| stop | string/array | null | 停止生成的标记 |
| max_tokens | integer | null | 最大生成 token 数 |
| presence_penalty | number | 0 | 存在惩罚,范围 -2 到 2 |
| frequency_penalty | number | 0 | 频率惩罚,范围 -2 到 2 |
| logit_bias | object | null | token 偏好设置 |
| user | string | null | 用户标识 |
{
"messages": [
{
"role": "system",
"content": "你是一个有用的助手"
},
{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!有什么可以帮助你的吗?"
},
{
"role": "user",
"content": "请介绍一下自己"
}
]
}
role 类型:
| 角色 | 说明 |
|---|
| system | 系统消息,设定助手的行为 |
| user | 用户消息 |
| assistant | 助手回复 |
curl https://aigc.aochengcloud.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{"role": "user", "content": "你好"}
]
}'
curl https://aigc.aochengcloud.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"model": "gpt-4",
"messages": [
{"role": "system", "content": "你是一个专业的编程助手"},
{"role": "user", "content": "用Python写一个快速排序"}
],
"temperature": 0.7,
"max_tokens": 1000,
"stream": false
}'
curl https://aigc.aochengcloud.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{"role": "user", "content": "讲一个故事"}
],
"stream": true
}'
{
"id": "chatcmpl-8VYRlGZS4uPpnS3FyW32vM",
"object": "chat.completion",
"created": 1704067200,
"model": "gpt-3.5-turbo-0613",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "你好!有什么可以帮助你的吗?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 15,
"total_tokens": 25
}
}
data: {"id":"chatcmpl-8VYRlGZS4uPpnS3FyW32vM","object":"chat.completion.chunk","created":1704067200,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
data: {"id":"chatcmpl-8VYRlGZS4uPpnS3FyW32vM","object":"chat.completion.chunk","created":1704067200,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{"content":"你"},"finish_reason":null}]}
data: {"id":"chatcmpl-8VYRlGZS4uPpnS3FyW32vM","object":"chat.completion.chunk","created":1704067200,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{"content":"好"},"finish_reason":null}]}
data: {"id":"chatcmpl-8VYRlGZS4uPpnS3FyW32vM","object":"chat.completion.chunk","created":1704067200,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
data: {"id":"chatcmpl-8VYRlGZS4uPpnS3FyW32vM","object":"chat.completion.chunk","created":1704067200,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]
| 字段 | 类型 | 说明 |
|---|
| id | string | 请求的唯一标识 |
| object | string | 对象类型 |
| created | integer | 创建时间戳 |
| model | string | 使用的模型 |
| choices | array | 生成的回复列表 |
| usage | object | token 用量统计 |
| 字段 | 类型 | 说明 |
|---|
| index | integer | 回复索引 |
| message | object | 回复内容 |
| finish_reason | string | 结束原因 |
| 值 | 说明 |
|---|
| stop | 正常结束 |
| length | 达到最大 token 数 |
| content_filter | 内容过滤 |
| function_call | 函数调用 |
| 字段 | 类型 | 说明 |
|---|
| prompt_tokens | integer | 输入 token 数 |
| completion_tokens | integer | 输出 token 数 |
| total_tokens | integer | 总 token 数 |
import openai
client = openai.OpenAI(
api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
base_url="https://aigc.aochengcloud.com/v1"
)
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "你好"}
]
)
print(response.choices[0].message.content)
stream = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "讲一个故事"}
],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
baseURL: 'https://aigc.aochengcloud.com/v1'
});
const response = await openai.chat.completions.create({
model: 'gpt-3.5-turbo',
messages: [
{ role: 'user', content: '你好' }
]
});
console.log(response.choices[0].message.content);
const stream = await openai.chat.completions.create({
model: 'gpt-3.5-turbo',
messages: [
{ role: 'user', content: '讲一个故事' }
],
stream: true
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
| 错误码 | 说明 | 处理方式 |
|---|
| 400 | 请求参数错误 | 检查请求参数格式 |
| 401 | 认证失败 | 检查 API Key |
| 429 | 请求频率超限 | 降低请求频率或增加限额 |
| 500 | 服务器错误 | 稍后重试 |
{
"error": {
"message": "Invalid request: missing required parameter 'messages'",
"type": "invalid_request_error",
"param": "messages",
"code": "missing_required_parameter"
}
}
- 0: 最确定性的输出,适合事实性回答
- 0.7: 平衡创造性和准确性
- 1.0: 默认值,适中
- 2.0: 最高创造性,可能产生不相关输出
根据预期回复长度设置:
- 简短回答:100-200
- 中等长度:500-1000
- 长文本:2000-4000
使用流式响应改善用户体验:
for chunk in stream:
print(chunk.choices[0].delta.content, end="", flush=True)