POST https://www.jiji.cc/v1/chat/completions
基础对话
import os
from openai import OpenAI
client = OpenAI(
base_url="https://www.jiji.cc/v1",
api_key=os.environ["JIJI_API_KEY"],
)
resp = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[
{"role": "system", "content": "你是一个简洁的编程助手。"},
{"role": "user", "content": "用一句话解释什么是闭包。"},
],
)
print(resp.choices[0].message.content)
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://www.jiji.cc/v1",
apiKey: process.env.JIJI_API_KEY,
});
const resp = await client.chat.completions.create({
model: "gpt-6.1-sol",
messages: [
{ role: "system", content: "你是一个简洁的编程助手。" },
{ role: "user", content: "用一句话解释什么是闭包。" },
],
});
console.log(resp.choices[0].message.content);
curl https://www.jiji.cc/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $JIJI_API_KEY" \
-d '{
"model": "gpt-6.1-sol",
"messages": [
{"role": "system", "content": "你是一个简洁的编程助手。"},
{"role": "user", "content": "用一句话解释什么是闭包。"}
]
}'
流式输出
设置stream: true,模型会边生成边返回,适合聊天界面:
stream = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[{"role": "user", "content": "写一首关于春天的短诗"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
const stream = await client.chat.completions.create({
model: "gpt-6.1-sol",
messages: [{ role: "user", content: "写一首关于春天的短诗" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
多轮对话
接口本身不保存历史。每次请求都要把之前的对话一起放进messages:
Python
messages = [{"role": "user", "content": "我叫小明"}]
resp = client.chat.completions.create(model="gpt-6.1-sol", messages=messages)
messages.append({"role": "assistant", "content": resp.choices[0].message.content})
messages.append({"role": "user", "content": "我叫什么名字?"})
resp = client.chat.completions.create(model="gpt-6.1-sol", messages=messages)
print(resp.choices[0].message.content)
工具调用
通过tools 声明函数,模型会在需要时返回要调用的函数和参数,由你的代码执行后再把结果传回:
Python
import json
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询城市的实时天气",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string", "description": "城市名"}},
"required": ["city"],
},
},
}]
messages = [{"role": "user", "content": "北京今天天气怎么样?"}]
resp = client.chat.completions.create(model="gpt-6.1-sol", messages=messages, tools=tools)
msg = resp.choices[0].message
if msg.tool_calls:
messages.append(msg)
for call in msg.tool_calls:
args = json.loads(call.function.arguments)
result = {"city": args["city"], "weather": "晴", "temp": 22} # 替换为真实查询
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result, ensure_ascii=False),
})
resp = client.chat.completions.create(model="gpt-6.1-sol", messages=messages, tools=tools)
print(resp.choices[0].message.content)
图片理解
在content 中传入图片 URL 或 Base64:
resp = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},
],
}],
)
import base64
with open("photo.png", "rb") as f:
b64 = base64.b64encode(f.read()).decode()
resp = client.chat.completions.create(
model="gpt-6.1-sol",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}},
],
}],
)
常用参数
| 参数 | 说明 |
|---|---|
model | 模型 ID,以 模型广场 为准 |
messages | 对话消息列表 |
stream | 是否流式返回 |
max_completion_tokens | 最多生成的 Token 数 |
reasoning_effort | 推理模型的思考强度,例如 low、medium、high |
tools | 可供模型调用的工具列表 |
response_format | 结构化输出,例如 {"type": "json_object"} |
调用 GPT 系列的推理模型时,推荐改用 Responses 接口,对思考和工具调用的支持更完整。

