Endpoint · Chat
Chat Completions
对话补全 API。请求和响应字段与 OpenAI v1/chat/completions 100% 一致——你已经在用的代码改一行 baseURL 就能跑。
端点
httpPOST https://api.aicodedog.com/v1/chat/completions
支持的模型见 /models。常用:gpt-5.4、gpt-5.4-mini、claude-opus-4-7、claude-sonnet-4-6、DeepSeek-V4-Pro、Kimi-K2.6。
最小请求
curlcurl https://api.aicodedog.com/v1/chat/completions \ -H "Authorization: Bearer $AICODEDOG_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.4", "messages": [ {"role": "system", "content": "你是一个简洁的助手。"}, {"role": "user", "content": "用一句话解释 RAG 是什么"} ], "temperature": 0.7, "max_tokens": 500 }'
Streaming(SSE 流式输出)
加上 "stream": true,响应变成 Server-Sent Events,每个 chunk 是一段增量 JSON:
pythonfrom openai import OpenAI client = OpenAI(api_key="<KEY>", base_url="https://api.aicodedog.com/v1") stream = client.chat.completions.create( model="gpt-5.4", messages=[{"role": "user", "content": "讲个 100 字的笑话"}], stream=True, ) for chunk in stream: delta = chunk.choices[0].delta.content or "" print(delta, end="", flush=True)
nodeconst stream = await client.chat.completions.create({ model: 'gpt-5.4', messages: [{ role: 'user', content: '讲个 100 字的笑话' }], stream: true, }); for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content ?? ''); }
Function Calling / Tools
描述工具的 JSON Schema,模型会在合适时机返回 tool_calls,你执行后把结果作为下一轮的 tool 角色消息塞回去:
pythontools = [{ "type": "function", "function": { "name": "get_weather", "description": "查询某个城市当前天气", "parameters": { "type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"], }, }, }] resp = client.chat.completions.create( model="claude-sonnet-4-6", messages=[{"role": "user", "content": "北京今天热吗?"}], tools=tools, tool_choice="auto", ) tool_call = resp.choices[0].message.tool_calls[0] # tool_call.function.name == "get_weather" # tool_call.function.arguments == '{"city": "北京"}'
JSON 模式
强制模型输出合法 JSON。适合数据提取、API 集成等需要稳定结构的场景:
json{ "model": "gpt-5.4", "messages": [ {"role": "system", "content": "把用户输入转成 {city, day} 结构。"}, {"role": "user", "content": "查下北京周二的天气"} ], "response_format": { "type": "json_object" } }
System prompt 必须提到 JSON
这是 OpenAI 的硬性要求——如果 system 或 user 消息里没出现「JSON」字样,会拒绝并报
400。多模态(图像输入)
支持图像输入的模型(如 gpt-5.4、claude-opus-4-7、gemini-3-1-pro)可以混合文字 + 图:
json{ "model": "gpt-5.4", "messages": [{ "role": "user", "content": [ {"type": "text", "text": "图里写了什么字?"}, { "type": "image_url", "image_url": { "url": "https://example.com/sign.jpg" } } ] }] }
也支持 base64 dataURL(data:image/png;base64,iVBOR...),适合本地图。
完整参数表
model(必填)— 模型 slug。messages(必填)— 对话历史,按system / user / assistant / tool角色组织。temperature—0–2,默认 1。0 接近确定性,2 高度随机。top_p— 核采样阈值,默认 1。和temperature二选一即可。max_tokens— 输出上限。**强烈建议**显式设置避免失控成本。stream— 流式输出,true / false。stop— 字符串或字符串数组,遇到时停止生成。presence_penalty / frequency_penalty—-2.0–2.0,控制新话题/重复。tools / tool_choice— 函数调用配置(见上节)。response_format— JSON 模式(见上节)。seed— 同一 seed + 同一输入尝试给出可复现结果(best-effort)。user— 你侧的最终用户标识,用于 abuse 检测。
响应格式
json{ "id": "chatcmpl-AbCdEfGhIjK", "object": "chat.completion", "created": 1747291200, "model": "gpt-5.4", "choices": [{ "index": 0, "message": { "role": "assistant", "content": "RAG = 检索增强生成,先查再答。" }, "finish_reason": "stop" }], "usage": { "prompt_tokens": 24, "completion_tokens": 12, "total_tokens": 36 } }
finish_reason 取值:stop(自然结束)/ length(达到 max_tokens)/ tool_calls(工具触发)/ content_filter(被安全策略拦截)。