尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Tarko LLM Examples 接入指南:OpenAI、Anthropic、Gemini 与 OpenAI 兼容端点调用示例全解

Tarko LLM Examples 接入指南:OpenAI、Anthropic、Gemini 与 OpenAI 兼容端点调用示例全解 Tarko LLM Examples 接入指南OpenAI、Anthropic、Gemini 与 OpenAI 兼容端点调用示例全解【免费下载链接】UI-TARS-desktopThe Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop本指南围绕 UI-TARS-desktop 仓库中multimodal/tarko/llm/examples/README.md展开它是 Tarko 系列中LLM 调用示例集LLM Examples的索引整理了三类信息官方开发者资源入口、各家主流模型的最小可用代码、以及统一 OpenAI 兼容协议的厂商清单。读完本文你将掌握 OpenAI / Anthropic / Gemini 的 API Key 配置方式与基础调用写法、仓库提供的 curl / TypeScript 双形态示例、视觉理解、Function Calling、结构化输出与图像生成等进阶用法以及如何借助 OpenAI 兼容端点一处接入 Ollama、LM Studio 等本地模型服务。一、示例集定位一个“开发者入口 调用方法”速查目录examples/目录的定位用原文档原文概括就是 “overview of the developer links and call methods for common models”——面向开发者的多模型接入速查。它并非一个完整的业务框架而是把以下内容集中到一处每个厂商的密钥申请入口、官方文档、SDK/NPM 包、GitHub 仓库等外部资源地址每个厂商最小可运行代码Response / Chat Completions / Messages / generateContent 等不同 API 形态OpenAI 兼容端点清单便于把不同厂商服务统一收敛到 OpenAI 协议之下。从仓库结构看multimodal/tarko/llm/examples/original/下实际存放了比 README 更完整的可执行示例按能力分成了五个子目录形成“README 索引 original 脚本实体”的对照关系multimodal/tarko/llm/examples/original/ ├── curl/ # 各厂商纯 curl 直连调用与 JSONL 返回样例 │ ├── openai.sh / openai.jsonl │ ├── gemini.sh / gemini.jsonl │ └── anthropic.sh / anthropic.jsonl ├── function-call/ # Function Calling工具调用两轮对话 │ ├── openai.ts / openai.jsonl │ └── gemini.ts / gemini.jsonl / gemini.md ├── vision/ # 视觉理解Base64 与 URL 引用两种传图方式 │ ├── openai-*.ts / anthropic-*.ts / gemini-*.ts │ └── 同名 *.jsonl 请求记录 ├── structured_outputs/ # 结构化输出JSON Mode / JSON Schema / 函数调用 │ ├── openai-json-mode.ts / openai-json-schema.ts │ ├── claude-3.7-*.ts │ └── doubao-*.ts └── image-generation/ # 图像生成 └── openai-generate-image.ts / openai-generate-image.jsonl原文档中 “Anthropic”“OpenAI Compatibility” 等小节只给了表格占位而真实的 Anthropic 调用脚本见curl/anthropic.sh、Claude 3.7 结构化输出见structured_outputs与视觉示例见vision都落在original/子目录中阅读时可将 README 与这些脚本互相印证。二、第一步配置 API Key 环境变量无论是 curl 脚本还是 TypeScript 脚本仓库统一约定通过进程环境变量注入密钥而不是把密钥硬编码进代码export OPENAI_API_KEYx export ANTHROPIC_API_KEYy在此基础上补充 Geminiexport GEMINI_API_KEYz对应的环境变量与厂商映射关系如下环境变量适用厂商README / 示例中的读取方式OPENAI_API_KEYOpenAIprocess.env[OPENAI_API_KEY]OpenAI SDK 默认读取项可省略显式传入ANTHROPIC_API_KEYAnthropiccurl 中以x-api-key请求头传入GEMINI_API_KEYGoogle Gemininew GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY })这一点在 curl 示例中体现得最直接仓库的openai.sh、gemini.sh、anthropic.sh开头都会先做一次空值校验未设置对应变量就报错退出。例如openai.sh的首段逻辑if [ -z $OPENAI_API_KEY ]; then echo Error: Environment variable OPENAI_API_KEY is not set exit 1 figemini.sh、anthropic.sh对GEMINI_API_KEY、ANTHROPIC_API_KEY的校验方式与此一致。因此运行任何示例前请务必先在当前 shell 中完成 exportTypeScript 脚本也可在项目根目录维护.env后借助 Node 的--env-file加载需按你所用运行环境确认支持情况。三、OpenAIResponses API 与 Chat Completions3.1 开发者资源与官方入口原文档给出 OpenAI 相关的四类资源便于取密钥与查阅协议Type说明GET API KEYS平台 API 密钥管理页platform.openai.com/api-keysAPI Documentation官方 API 参考platform.openai.com/docs/api-referenceOpenAPI Specificationopenai-openapi仓库维护的 OpenAPI 规范可据此生成各语言客户端Github / NPMopenai-node官方 Node.js SDK 源码与 npm 包仓库package.json锁定的官方 SDK 版本为openai4.93.0见multimodal/tarko/llm/package.json以下 TypeScript 示例均基于该 SDK 编写。3.2 官方 SDK 最小示例Responses API原文档展示的是 2024 年后主推的Responses APIclient.responses.createinstructions用于注入系统级指令input承载用户消息import OpenAI from openai; const client new OpenAI({ apiKey: process.env[OPENAI_API_KEY], // This is the default and can be omitted }); const response await client.responses.create({ model: gpt-4o, instructions: You are a coding assistant that talks like a pirate, input: Are semicolons optional in JavaScript?, }); console.log(response.output_text);要点apiKey显式传与不传等价SDK 默认读取OPENAI_API_KEYoutput_text是 Responses API 对文本输出的便捷访问器。示例模型gpt-4o与仓库 READMEmultimodal/tarko/llm/README.md中的 Quick Start 模型保持一致。3.3 传统 Chat Completions 与 curl 直连examples/original/中保留了更传统的chat/completions写法。TS 形态见 function-call/openai.tsopenai.chat.completions.create纯 curl 形态见 curl/openai.shcurl https://api.openai.com/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $OPENAI_API_KEY \ -d { model: gpt-4o, messages: [ { role: user, content: Hello, world. } ] }请求体是messages数组role: user/system/assistant/toolmodel字段这是所有 OpenAI 兼容端点都能识别的通用骨架。对应的返回结构可从 curl/openai.jsonl 这类录制样例中看到核心字段包括顶层id、object: chat.completion、choices[0].message含role、content、finish_reason以及usageprompt_tokens/completion_tokens/total_tokens及其细粒度 breakdown。功能调用的两轮对话流程模型先返回tool_calls应用执行函数后以role: tool回传结果正是建立在消息数组之上的详见后文进阶章节。四、Anthropic ClaudeMessages API 与请求头约定原文档在 “Anthropic” 小节处暂未给出代码但examples/original用脚本补齐了这一缺口的调用方法。Anthropic Messages API 与 OpenAI 的最大差异在于鉴权方式与版本号请求头见 curl/anthropic.shcurl https://api.anthropic.com/v1/messages \ --header x-api-key: $ANTHROPIC_API_KEY \ --header anthropic-version: 2023-06-01 \ --header content-type: application/json \ --data \ { model: claude-3-5-sonnet-20241022, max_tokens: 1024, messages: [ {role: user, content: Hello, world} ] }两个必须注意的约定鉴权Anthropic 不用Authorization: Bearer而是要求x-api-key请求头携带密钥版本协商必须显式带anthropic-version请求头示例固定为2023-06-01否则请求会被拒参数差异与 OpenAI 不同Messages API 要求显式指定max_tokens且messages的 content 可以是字符串也可以是后续视觉示例中使用的内容块数组。Claude 3.7 时代的更完整能力示例JSON Mode、JSON Schema、Function Calling集中在 structured_outputs 目录文件命名claude-3.7-*.ts可一一对应后文结构化输出章节会展开。五、Geminigoogle/genai 与 generateContent5.1 开发者资源与官方入口原文档为 Gemini 提供了一张更细的资源表Type说明GET API KEYSAI Studio 密钥申请页aistudio.google.com/apikeyAPI DocumentationGemini API 官方文档ai.google.dev/gemini-api/docsNPMgoogle/genai新客户端Models模型列表与型号说明ai.google.dev/gemini-api/docs/modelsQuotas用量配额控制台console.cloud.google.com的 generativelanguage 配额页仓库package.json同时锁定google/generative-ai0.24.0旧客户端与google/genai0.8.0新客户端如何取舍见下方警告框。5.2 官方 SDK 最小示例import { GoogleGenAI } from google/genai; const ai new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY }); async function main() { const response await ai.models.generateContent({ model: gemini-2.0-flash, contents: Explain how AI works, }); console.log(response.text); } await main();Gemini 请求使用contents对话上下文数组generateContent单轮生成返回文本通过response.text读取。5.3 两个 npm 包怎么选原文档警告原文[!WARNING] Whats the difference between these two packages?google/generative-aigoogle/genai两者的差异讨论见googleapis/js-genaiissue #314。从仓库示例的使用分布也能侧面印证取舍趋势新客户端google/genai出现在 function-call/gemini.ts、vision/gemini-*-new_client.ts 等较新示例中vision目录里甚至还同时保留了gemini-base64-encoded-image.ts旧客户端与gemini-base64-encoded-image__new_client.ts新客户端两个版本便于对照新增能力如FunctionDeclaration/Type类型化的函数声明主要围绕新客户端编写。5.4 curl 直连与密钥位置差异Gemini 的原生 REST 端点与 OpenAI/Anthropic 又不同——密钥以 query 参数key传递且方法为generateContent见 curl/gemini.shcurl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key$GEMINI_API_KEY \ -H Content-Type: application/json \ -X POST \ -d { contents: [{ parts:[{text: Hello, world.}] }] }注意请求体层级外层是contents[]每条消息内部通过parts[]承载文本或多模态内容块——这一结构与视觉、Function Calling 的多轮交互示例往contents中追加 model / functionResponse 消息完全一致可参阅 function-call/gemini.ts 与 vision/gemini-url-referenced-image.ts。六、OpenAI 兼容端点一套协议接入多家服务原文档专门列出了OpenAI Compatibility资源清单意在指出只要服务商提供 OpenAI 兼容端点就能复用你熟悉的chat/completions协议与 SDK。Type说明GeminiGoogle 官方为 Gemini 提供的 OpenAI 兼容模式文档AnthropicAnthropic 官方 SDK 对 OpenAI 格式的兼容说明Ollama本地开源模型运行时文档中专门给出 OpenAI 兼容接口说明LM Studio本地图形化模型管理工具提供 OpenAI 风格 API 端点这条兼容策略与tarko/llm包的设计意图完全吻合该包package.json的描述即是 “A TypeScript SDK to call multiple LLM Providers in OpenAI format”见 multimodal/tarko/llm/package.json。其 README 中的 Quick Start 展示了如何通过provider baseUrl参数化创建不同渠道客户端——所有渠道都走统一的client.chat.completions.createimport { LLMClient } from agent-infra/llm; const client new LLMClient(openai, { apiKey: , baseUrl: , }); const result await client.chat.completions.create({ messages: [{ role: user, content: Say this is a test }], model: gpt-4o, });例如接入openrouter这类聚合网关时只需把 provider 改为openrouter、把模型名写全如openai/gpt-4o其余调用代码保持不变。由此可以推断当你想把 Ollama、LM Studio 拉到本地跑或把 Gemini/Anthropic 的兼容端点接进这套基建时核心工作集中在baseUrl与鉴权方式的切换上。仓库中另一些渠道示例可作为旁证例如 structured_outputs 目录下还出现了面向豆包doubao-json-mode.ts、doubao-json-schema.ts、doubao-json-mode-function-call.ts的 JSON Mode / JSON Schema / Function Calling 示例说明示例集有意覆盖“以 OpenAI 格式调用不同厂商”的常见组合。说明README 中展示的LLMClient代码当前标注为agent-infra/llm导入名而该目录package.json的包名仍为tarko/llm、仓库文件头亦标记 “(WIP)”src/index.ts当前为空。可见 SDK 主体仍在演进中现阶段examples/目录才是这套“接入方法”最完整、可直接照抄验证的部分。七、进阶能力示例Function Calling、视觉、结构化输出与图像生成examples/original/五个子目录里除 curl 外均为能力型示例全部基于上面的基础调用写法扩展可独立阅读运行。7.1 Function Calling工具调用以“查询天气”为演示函数OpenAI 与 Gemini 两套写法分别位于 function-call/openai.ts 与 function-call/gemini.ts。共同点是先声明 schemaOpenAI 侧通过tools: ChatCompletionTool[]声明type: functionfunction.name/description/parametersstrict: true可启用严格模式函数参数用 JSON Schema 描述required声明必填字段Gemini 侧通过GenerateContentConfig.tools[].functionDeclarations[]声明FunctionDeclaration其parameters使用google/genai导出的Type.OBJECT/Type.STRING枚举构造。之后进入“调用 → 执行 → 回传 → 二次生成”的两轮循环。OpenAI 版将模型返回的tool_calls[0]解析为函数参数执行本地getWeather()再把role: tooltool_call_id的结果消息追加进messages发起第二轮请求messages.push(completion.choices[0].message); // append models function call message messages.push({ role: tool, tool_call_id: toolCall.id, content: JSON.stringify(result), // openai 需手动序列化避免 [object Object] }); const nextCompletion await openai.chat.completions.create({ model: gpt-4o, messages, tools });Gemini 版结构类似但消息模型是contents把 model 的functionCall与携带结果的functionResponse以不同role依次push进contents后再次调用generateContent。示例注释给出了关键提示——OpenAI 回传 content 需用.toString()手动 JSON 序列化避免变成[object Object]。7.2 视觉理解Base64 与 URL 两种传图vision 目录为 OpenAI、Anthropic、Gemini 三套 SDK 分别提供 Base64 内联与 URL 引用两种形态共 8 组.ts.jsonl对照。以 OpenAI 为例openai-base64-encoded-image.ts 演示了完整链路先fetch图片拿到arrayBuffer再转成 base64 拼成data:image/png;base64,...的 data URL放进多模态content数组的image_url块中const imageArrayBuffer await (await fetch(imageUrl)).arrayBuffer(); const imageData Buffer.from(imageArrayBuffer).toString(base64); // content 为 [{ type: text, text: Extract key information ... }, { type: image_url, image_url: { url: data:image/png;base64,${imageData} } }]该示例还演示了stream: true的流式输出for await (const chunk of response)逐块消费增量结果。同名.jsonl文件则录制了对应的请求/响应样本便于离线核对消息结构。7.3 结构化输出JSON Mode 与 JSON Schemastructured_outputs 目录集中了各家“保证模型输出合法 JSON / 精确 Schema”的方案OpenAI JSON Mode JSON Schema以 openai-json-schema.ts 为例用zod定义MathSolutionSchemasteps[]、final_answer、可选的confidence再经openai/helpers/zod的zodResponseFormat(schema, steps)传给response_format实现“按 Schema 输出 运行时解析校验”。该文件同时给出非流式与流式两种版本——流式时需要自行拼接各 chunk 的delta.content最后统一JSON.parse并schema.parse校验Claude 3.7claude-3.7-json-mode.tsJSON Mode、claude-3.7-json-schema.tsJSON Schema、claude-3.7-function-call.ts函数调用三件套覆盖 Anthropic 侧的结构化输出能力豆包 Doubaodoubao-json-mode.ts/doubao-json-schema.ts/doubao-json-mode-function-call.ts验证了同一套思路在火山方舟渠道上的可行性。这批示例的共同价值在于它们直接支撑 Agent 场景中“把模型输出变成可编程数据”的诉求——与 UI-TARS 这类 Agent 栈下游对接动作解析、状态机流转时的高可靠解析需求一脉相承。7.4 图像生成image-generation/openai-generate-image.ts 演示了用gpt-image-1生成图片并落盘const response await openai.images.generate({ model: gpt-image-1, prompt: A children\s book drawing of a veterinarian ..., }); const image_base64 response.data[0].b64_json; // 返回 base64 图片数据 const image_bytes Buffer.from(image_base64, base64); fs.writeFileSync(otter.png, image_bytes); // 解码后写文件要点是images.generate返回的b64_json需经Buffer.from(..., base64)解码后再写盘。对应的openai-generate-image.jsonl保留了完整请求与响应记录供参考。八、运行与深入从示例到 Tarko 生态运行示例的通用前置条件可归纳为三步按第二节 export 对应厂商的 API Keycurl 脚本会自行校验并给出明确报错安装依赖本模块依赖由仓库 workspace 统一管理相关 SDK 版本锁定在multimodal/tarko/llm/package.jsonopenai4.93.0、anthropic-ai/sdk0.39.0、google/generative-ai0.24.0、google/genai0.8.0、typescript^5.5.3、types/node22.15.30从仓库根目录执行安装后即可.ts示例为自包含脚本自带main()调用、部分带async function入口可用支持 TS 的运行时如tsx直接执行.sh示例可直接以bash xxx.sh运行。进阶对照练习建议按如下路径逐步深入先跑通 OpenAI 的 Chat Completions对照 curl/openai.sh 与 function-call/openai.ts→ 再在 Gemini 上用 function-call/gemini.ts 体会两套消息模型的差异 → 用 vision 的多模态内容块打通图文输入 → 最后以结构化输出与图像生成为多模态 Agent 补齐“出参可控”与“生成能力”两块拼图。如果要在仓库内进一步理解这套调用方法被如何使用可继续阅读其上层协议定义与 Agent 基建multimodal/tarko/llm/README.mdLLMClient多 Provider 统一调用的 Quick Start 与 WIP 说明multimodal/tarko/llm/package.json包名、导出配置与 SDK 依赖版本multimodal/tarko/agent/ 与 multimodal/tarko/agent-server/Agent 运行时与服务端示例集中的 Function Calling、结构化输出正是这些 Agent 编排层所依赖的关键交互能力。总而言之本示例集的价值在于把“多厂商、多协议、多模态”的接入复杂度收敛成一套可对照、可复用的脚本矩阵无论你的 Agent 后续接 OpenAI、Anthropic、Gemini还是本地 Ollama / LM Studio都能在multimodal/tarko/llm/examples/中找到对应的最小实现作为起点。【免费下载链接】UI-TARS-desktopThe Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表