06 · OpenAI SDK 接入 Freecode#
使用官方 OpenAI SDK,自定义 Base URL 为 https://api.freecode.cc/v1。Responses 和 Chat Completions 是不同接口,应选择该模型及分组支持的格式。
1. 设置环境变量#
macOS / Linux / WSL:
export FREECODE_API_KEY="sk-your-freecode-api-key"
export FREECODE_MODEL="gpt-6.1-sol"
PowerShell:
$env:FREECODE_API_KEY = "sk-your-freecode-api-key"
$env:FREECODE_MODEL = "gpt-6.1-sol"
2. Python:Responses#
安装到当前 Python 环境:
python -m pip install --upgrade openai
保存为 freecode_openai.py:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["FREECODE_API_KEY"],
base_url="https://api.freecode.cc/v1",
timeout=120.0,
)
response = client.responses.create(
model=os.environ.get("FREECODE_MODEL", "gpt-6.1-sol"),
input="请用一句话打个招呼",
store=False,
)
print(response.output_text)
运行:
python freecode_openai.py
流式输出,将上面创建请求和打印的部分替换为:
stream = client.responses.create(
model=os.environ.get("FREECODE_MODEL", "gpt-6.1-sol"),
input="请写一首四行小诗",
store=False,
stream=True,
)
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
print()
3. JavaScript:Responses#
在项目目录安装:
npm install openai
保存为 freecode_openai.mjs。.mjs 使用 ES Modules,可直接在 Node.js 中执行:
import OpenAI from "openai";
if (!process.env.FREECODE_API_KEY) {
throw new Error("请先设置 FREECODE_API_KEY");
}
const client = new OpenAI({
apiKey: process.env.FREECODE_API_KEY,
baseURL: "https://api.freecode.cc/v1",
timeout: 120000,
});
const response = await client.responses.create({
model: process.env.FREECODE_MODEL ?? "gpt-6.1-sol",
input: "请用一句话打个招呼",
store: false,
});
console.log(response.output_text);
运行:
node freecode_openai.mjs
流式输出,将创建请求和打印的部分替换为:
const stream = await client.responses.create({
model: process.env.FREECODE_MODEL ?? "gpt-6.1-sol",
input: "请写一首四行小诗",
store: false,
stream: true,
});
for await (const event of stream) {
if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
}
}
process.stdout.write("\n");
4. Chat Completions#
使用支持该接口的模型及分组,例如 gpt-4o。在上面的 Python client 初始化之后,可改为:
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "请用一句话打个招呼"}],
)
print(response.choices[0].message.content)
JavaScript 的对应写法:
const response = await client.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "请用一句话打个招呼" }],
});
console.log(response.choices[0].message.content);
若使用 Chat Completions 流式输出,部分分片可能没有 choices,读取前先判断,避免因空分片导致应用异常。
5. 验证与集成#
收到回复后,在 使用日志 核对模型、分组和用量。LangChain 等框架若支持自定义 OpenAI Base URL,可以使用相同地址;接口和模型参数仍须按框架实际调用格式设置。
密钥仅放在服务端环境或本机环境中,不写入网页前端代码。报错见 常见问题。