SkillFlaw TypeScript 集成
SkillFlaw 当前并没有随仓库发布官方维护的 TypeScript SDK。 推荐的 TypeScript 集成方式有两种:
- 直接通过
fetch、axios或其他 HTTP 客户端调用 SkillFlaw HTTP API - 使用 OpenAI JavaScript 客户端调用 SkillFlaw 的 OpenAI 兼容端点
/api/v1/responses
这种做法与当前后端实现保持一致,也与 Share → API access 中自动生成的代码片段口径一致。
方案 1:直接调用 /api/v1/run/{flow_id_or_alias}
当你需要原生 SkillFlaw run 请求体时,推荐使用这种方式,例如需要:
input_valueinput_typeoutput_typetweakssession_id
- fetch
- axios
_31const baseUrl = "http://localhost:7860";_31const apiKey = process.env.SKILLFLAW_API_KEY!;_31const flowId = "YOUR_FLOW_ID";_31_31async function runFlow() {_31 const response = await fetch(`${baseUrl}/api/v1/run/${flowId}`, {_31 method: "POST",_31 headers: {_31 "Content-Type": "application/json",_31 "x-api-key": apiKey,_31 },_31 body: JSON.stringify({_31 input_value: "Hello from TypeScript",_31 input_type: "chat",_31 output_type: "chat",_31 tweaks: {_31 model_name: "gpt-4o-mini",_31 },_31 session_id: "ts-example-session",_31 }),_31 });_31_31 if (!response.ok) {_31 throw new Error(`SkillFlaw run failed: ${response.status} ${response.statusText}`);_31 }_31_31 const data = await response.json();_31 console.log(JSON.stringify(data, null, 2));_31}_31_31runFlow().catch(console.error);
_21import axios from "axios";_21_21const client = axios.create({_21 baseURL: "http://localhost:7860",_21 headers: {_21 "x-api-key": process.env.SKILLFLAW_API_KEY,_21 },_21});_21_21async function runFlow() {_21 const { data } = await client.post(`/api/v1/run/YOUR_FLOW_ID`, {_21 input_value: "Hello from axios",_21 input_type: "chat",_21 output_type: "chat",_21 session_id: "axios-session",_21 });_21_21 console.log(data);_21}_21_21runFlow().catch(console.error);
何时使用原生 run 端点
以下场景更适合用 /api/v1/run/{flow_id_or_alias}:
- 你想复用 SkillFlaw UI 中生成的同款请求结构
- 你需要
tweaks - 你需要显式控制
session_id - 你想与现有 SkillFlaw Flow 示例保持直接兼容
方案 2:使用 OpenAI JavaScript 客户端
如果你的应用已经在用 OpenAI SDK,可以把它指向 SkillFlaw 的 OpenAI 兼容端点:
_20import OpenAI from "openai";_20_20const client = new OpenAI({_20 baseURL: "http://localhost:7860/api/v1/",_20 defaultHeaders: {_20 "x-api-key": process.env.SKILLFLAW_API_KEY!,_20 },_20 apiKey: "dummy-api-key", // SDK 必填,但 SkillFlaw 会忽略它_20});_20_20async function runResponse() {_20 const response = await client.responses.create({_20 model: "YOUR_FLOW_ID_OR_ALIAS",_20 input: "Summarize the latest deployment changes.",_20 });_20_20 console.log(response.output_text);_20}_20_20runResponse().catch(console.error);
如果你希望在已有 OpenAI 客户端集成层上最小代价接入 SkillFlaw,这种方式很合适。 完整请求 / 响应契约请参阅 OpenAI Responses API。
认证
无论哪种方式,SkillFlaw 都通过 x-api-key 请求头做认证。
推荐做法:
- 创建或获取一个 SkillFlaw API Key
- 把它保存在环境变量中,例如
SKILLFLAW_API_KEY - 每次请求都通过
x-api-key传递
该选哪一种?
| 场景 | 推荐方式 |
|---|---|
| 你想使用与 SkillFlaw UI 代码片段一致的请求结构 | /api/v1/run/{flow_id_or_alias} |
你需要 tweaks 与显式 session_id | /api/v1/run/{flow_id_or_alias} |
| 你的应用已经依赖 OpenAI JavaScript SDK | /api/v1/responses |
| 你想保持最小依赖面 | 直接 fetch |