OpenAI SDK (Python / Node)
OpenAI 官方 SDK 完全兼容 ModeXFlow,只需把 base_url 指到 https://api.modexflow.cc/v1 即可。任何基于 OpenAI SDK 构建的应用都能无缝迁移过来。
Python
python
# pip install openai>=1.30
from openai import OpenAI
client = OpenAI(
base_url="https://api.modexflow.cc/v1",
api_key="sk-你的-token",
)
resp = client.chat.completions.create(
model="claude-opus-4-8",
messages=[
{"role": "system", "content": "你是一个简洁的编程助手"},
{"role": "user", "content": "用 Python 写一个二分查找"},
],
temperature=0.2,
max_tokens=1024,
)
print(resp.choices[0].message.content)
print("usage:", resp.usage)python
stream = client.chat.completions.create(
model="claude-opus-4-8",
messages=[{"role": "user", "content": "讲讲希腊神话"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)python
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市天气",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
resp = client.chat.completions.create(
model="claude-opus-4-8",
messages=[{"role": "user", "content": "北京今天什么天气?"}],
tools=tools,
tool_choice="auto",
)
# resp.choices[0].message.tool_calls → 后续按 OpenAI 规范处理python
# pip install openai[async] # 内置支持
from openai import AsyncOpenAI
async def main():
client = AsyncOpenAI(
base_url="https://api.modexflow.cc/v1",
api_key="sk-你的-token",
)
r = await client.chat.completions.create(
model="claude-opus-4-8",
messages=[{"role": "user", "content": "hi"}],
)
print(r.choices[0].message.content)
import asyncio; asyncio.run(main())Node.js / TypeScript
typescript
// npm i openai
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.modexflow.cc/v1",
apiKey: process.env.MODEXFLOW_API_KEY!,
});
const r = await client.chat.completions.create({
model: "claude-opus-4-8",
messages: [{ role: "user", content: "hi" }],
});
console.log(r.choices[0].message.content);
console.log("usage:", r.usage);typescript
const stream = await client.chat.completions.create({
model: "claude-opus-4-8",
messages: [{ role: "user", content: "讲讲希腊神话" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}typescript
// app/api/chat/route.ts
import OpenAI from "openai";
export async function POST(req: Request) {
const client = new OpenAI({
baseURL: "https://api.modexflow.cc/v1",
apiKey: process.env.MODEXFLOW_API_KEY!,
});
const { messages } = await req.json();
const stream = await client.chat.completions.create({
model: "claude-opus-4-8",
messages,
stream: true,
});
const encoder = new TextEncoder();
return new Response(
new ReadableStream({
async start(controller) {
for await (const c of stream) {
const d = c.choices[0]?.delta?.content;
if (d) controller.enqueue(encoder.encode(d));
}
controller.close();
},
}),
{ headers: { "Content-Type": "text/plain; charset=utf-8" } }
);
}LangChain 集成
python
# pip install langchain-openai
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://api.modexflow.cc/v1",
api_key="sk-你的-token",
model="claude-opus-4-8",
temperature=0.2,
)
print(llm.invoke("hi").content)typescript
import { ChatOpenAI } from "@langchain/openai";
const model = new ChatOpenAI({
configuration: { baseURL: "https://api.modexflow.cc/v1" },
apiKey: "sk-你的-token",
model: "claude-opus-4-8",
});
const r = await model.invoke("hi");
console.log(r.content);环境变量
强烈建议把 Key 存到环境变量:
bash
# .env
MODEXFLOW_API_KEY=sk-你的-token
MODEXFLOW_BASE_URL=https://api.modexflow.cc/v1代码里读:
python
import os
client = OpenAI(
base_url=os.getenv("MODEXFLOW_BASE_URL"),
api_key=os.getenv("MODEXFLOW_API_KEY"),
)不要写死 Key 到代码里
最容易泄露的场景就是 git commit 把 Key 提交了。
从 OpenAI 官方迁移的注意点
如果你的代码本来跑 OpenAI 官方,迁到 ModeXFlow 需要改的:
| 位置 | OpenAI 官方 | ModeXFlow |
|---|---|---|
base_url | https://api.openai.com/v1 | https://api.modexflow.cc/v1 |
api_key | sk-proj-... | ModeXFlow 的 sk-*** |
model | gpt-4o / gpt-5 | 见 模型列表 |
usage 字段 | 官方口径 | 我们保留一致的字段结构,扣费按 定价 |
其他所有参数(temperature、top_p、max_tokens、stop、tools、tool_choice、response_format 等)完全一致。