拓冰建站拓冰建站
首页 / 资讯中心 / 正文

PraisonAI TypeScript AI SDK 集成实战:从 createAISDKBackend 到多模型、工具调用与结构化输出

PraisonAI TypeScript AI SDK 集成实战从 createAISDKBackend 到多模型、工具调用与结构化输出【免费下载链接】PraisonAIPraisonAI — Hire a 24/7 AI Workforce. Stop writing boilerplate and start shipping autonomous self-improving agents that research, plan, code, and execute tasks. Deployed in 5 lines of code with built-in memory, RAG, and support for 100 LLMs.项目地址: https://gitcode.com/GitHub_Trending/pr/PraisonAI本文为 PraisonAI 仓库中 AI SDKVercel AI SDKTypeScript 集成示例集的完整技术指南。它覆盖 examples/js/ai-sdk/README.md 定义的全部前置依赖、环境变量与六个核心示例基础对话、流式输出、工具调用、多 Provider 并发、JSON Schema 结构化输出、多 Agent 归因并结合 src/praisonai-ts/src/llm/providers/ai-sdk/backend.ts 等源码说明createAISDKBackend背后的实现机制。读完之后你能够直接在 Node.js 项目中用统一接口接入 OpenAI、Anthropic、Google 等多家 LLM并掌握流式、工具调用与可观测归因的落地写法。一、前置准备依赖安装与环境变量AI SDK 集成示例依赖praisonaiTypeScript 包与 Vercel AI SDK 的各家 Provider 包。按 README 的说明安装命令如下npm install praisonai ai ai-sdk/openai ai-sdk/anthropic ai-sdk/google zod各依赖的职责praisonaiPraisonAI TypeScript SDK提供createAISDKBackend后端工厂及Agent等高层抽象aiVercel AI SDK 核心包提供generateText、generateObject、tool等底层原语ai-sdk/openai、ai-sdk/anthropic、ai-sdk/google三家模型的 Provider 适配器zod用于定义工具入参与结构化输出的 JSON Schema。运行示例前需要配置对应 Provider 的 API Key 环境变量以实际申请的密钥替换占位值export OPENAI_API_KEYsk-... export ANTHROPIC_API_KEYsk-ant-... export GOOGLE_API_KEYAIza...每个示例文件头部注释中都标注了自己所需的环境变量仅使用openai/...模型串的示例只需OPENAI_API_KEY而多 Provider 示例三者都需要。二、核心入口createAISDKBackend 与模型串六个示例中有四个basic-chat、streaming、multi-provider、multi-agent统一通过createAISDKBackend创建后端其核心签名是「模型串 可选配置」import { createAISDKBackend } from praisonai; const backend createAISDKBackend(openai/gpt-4o-mini, { timeout: 30000, });模型串采用provider/model的约定格式openai/gpt-4o-mini、anthropic/claude-3-haiku-20240307、google/gemini-1.5-flash。从源码结构看该工厂函数的实现位于 ai-sdk provider 目录并由 backend-resolver.ts 统一解析后端选择同一套示例也镜像在 src/praisonai-ts/examples/ai-sdk/ 下说明其属于 praisonai-ts 包的一等能力。第二参数是后端配置对象示例中实际用到的字段包括timeout单次请求超时毫秒数示例统一使用30000attribution多 Agent 归因上下文见第六节可携带agentId、runId、traceId、sessionId。三、基础文本生成basic-chat.tsexamples/js/ai-sdk/basic-chat.ts 演示最典型的「系统提示 用户消息 → 一次generateText调用」模式import { createAISDKBackend } from praisonai; const backend createAISDKBackend(openai/gpt-4o-mini); const result await backend.generateText({ messages: [ { role: system, content: You are a helpful assistant. }, { role: user, content: What are the three primary colors? } ], maxTokens: 200, temperature: 0.7, }); console.log(Response:, result.text); console.log(\nFinish reason:, result.finishReason); if (result.usage) { console.log(Token usage:, result.usage); }要点messages是标准的 role/content 消息数组支持 system 与 user 角色混排maxTokens与temperature是透传给底层模型的生成参数返回对象包含text生成文本、finishReason结束原因与usageToken 用量后两者对成本核算与流控判断非常有用。运行方式README 中给出的命令npx ts-node basic-chat.ts仓库中还提供了另一种更高层的写法 generate-text.ts直接使用Agent类完成带上下文的连续对话import { Agent } from ../../../src/praisonai-ts/src; const agent new Agent({ instructions: You are a helpful assistant that provides concise answers., llm: openai/gpt-4o-mini, }); const response await agent.chat(What is the capital of France?); const response2 await agent.chat(What is its population?); // 带上下文追问该文件通过本地相对路径导入praisonai-ts包源码注释中说明生产环境应改为import { Agent } from praisonai。四、流式输出streaming.tsexamples/js/ai-sdk/streaming.ts 演示streamText的逐块消费方式const stream await backend.streamText({ messages: [{ role: user, content: Write a short poem about coding. }], maxTokens: 200, }); for await (const chunk of stream) { if (chunk.text) { process.stdout.write(chunk.text); } if (chunk.finishReason) { console.log(\n\nFinish reason:, chunk.finishReason); } }实现要点streamText返回一个可for await迭代的可异步迭代器每个chunk携带增量文本text最后一个 chunk 上携带finishReason。示例用process.stdout.write而非console.log保证流式字符无换行地连续输出——这是终端流式渲染的常见技巧。五、工具调用tool-calling.tsexamples/js/ai-sdk/tool-calling.ts 展示基于 Zod Schema 的函数调用。该示例直接基于 AI SDK 原语generateTexttool而非createAISDKBackend体现了两套 API 的关系后端是封装原语是底座。import { generateText, tool } from ai; import { openai } from ai-sdk/openai; import { z } from zod; const tools { get_weather: tool({ description: Get the current weather for a city, inputSchema: z.object({ city: z.string().describe(The city name), unit: z.enum([celsius, fahrenheit]).optional().describe(Temperature unit), }), execute: async ({ city, unit celsius }) { return { city, temperature: unit celsius ? 22 : 72, unit, condition: sunny, humidity: 45 }; }, }), get_time: tool({ description: Get the current time in a timezone, inputSchema: z.object({ timezone: z.string().describe(Timezone like America/New_York), }), execute: async ({ timezone }) { const time new Date().toLocaleString(en-US, { timeZone: timezone }); return { timezone, time }; }, }), }; const result await generateText({ model: openai(gpt-4o-mini), messages: [{ role: user, content: What is the weather in Paris and what time is it in New York? }], tools, maxSteps: 5, // Allow multiple tool calls });关键参数与返回值tool()接收description、inputSchemaZod 对象describe会进入给模型的参数说明与execute执行函数maxSteps: 5允许多轮「模型发起调用 → 执行工具 → 结果回传 → 模型继续推理」的循环是本示例一次问答中同时触发两个工具的前提result.toolCalls与result.toolResults分别记录了模型发起的调用toolName、args与执行结果toolName、result便于审计与调试。此外同目录的 tool-approval.ts 进一步演示了 human-in-the-loop 工具审批通过withApproval将工具标记为needsApproval: true始终审批或用createDangerousPatternChecker()危险命令模式才审批再注册getApprovalManager().onApprovalRequest(...)回调处理审批请求。六、多 Provider 并发multi-provider.tsexamples/js/ai-sdk/multi-provider.ts 用同一提示词、同一接口同时测试三家模型验证 Provider 无关性const providers [ openai/gpt-4o-mini, anthropic/claude-3-haiku-20240307, google/gemini-1.5-flash, ]; const results await Promise.all(providers.map(testProvider)); const successful results.filter(Boolean).length;其中testProvider内部为每个 Provider 独立创建后端timeout: 30000、计时Date.now()差值、捕获异常并统计成功数最终输出形如Summary: N/3 providers succeeded。该写法展示了三个实用能力同一generateText接口切换不同厂商仅改变模型串即可Promise.all并发发起多模型请求用于对比质量或做容灾/路由决策每个 Provider 独立 try/catch单家密钥缺失或超时不影响整体流程。七、结构化输出structured-output.tsexamples/js/ai-sdk/structured-output.ts 使用generateObject配合 Zod 生成类型安全的 JSON 对象import { generateObject } from ai; import { openai } from ai-sdk/openai; import { z } from zod; const PersonSchema z.object({ name: z.string().describe(Full name), age: z.number().describe(Age in years), occupation: z.string().describe(Job title), city: z.string().describe(City of residence), interests: z.array(z.string()).describe(List of hobbies/interests), bio: z.string().describe(Short biography), }); const personResult await generateObject({ model: openai(gpt-4o-mini), schema: PersonSchema, prompt: Generate a fictional software engineer profile., });示例还定义了嵌套结构的RecipeSchema含ingredients: z.array(z.object({ item, amount }))与instructions: z.array(z.string())演示了数组套对象的复杂 Schema。生成后可直接做类型安全的字段访问与计算console.log(Person name: ${personResult.object.name}); console.log(Total time: ${recipeResult.object.prepTime recipeResult.object.cookTime} minutes);Zod 中每个字段的describe()会成为传给模型的字段说明直接影响生成质量建议为每个字段写明语义与单位。八、多 Agent 归因与可观测性multi-agent.tsexamples/js/ai-sdk/multi-agent.ts 演示如何将归因上下文注入每次 LLM 调用以便在 Provider 侧把多 Agent 工作流的请求关联起来interface AgentContext { agentId: string; runId: string; traceId: string; sessionId?: string; } const backend createAISDKBackend(openai/gpt-4o-mini, { attribution: context, timeout: 30000, });示例模拟了一个 Research → Summary → Review 的三级 Agent 流水线整个工作流共享一个traceIdtrace-时间戳36进制与sessionId每个 Agent 有独立的agentId与递增的runId。这样所有请求都打上同一 trace 标记后可以在 LLM Provider 的仪表盘上按 trace 关联查看整条链路的调用实现多 Agent 系统的端到端可观测性。九、目录中其余示例与延伸阅读除 README 表格列出的六个核心示例外examples/js/ai-sdk/ 目录还包含更多进阶示例文件可作为后续深入素材stream-text.ts、ui-message.tsAI SDK 的流式与 UI 消息原语mcp-client.ts通过 AI SDK 连接 MCP 服务器telemetry.ts遥测/可观测性speech-transcription.ts语音转写能力。运行任意示例的通用方式为npx ts-node 文件名.ts并在执行前确保对应环境变量已导出。需要说明的适用前提示例依赖各家真实 API Key 与可访问的 Provider 网络generate-text.ts等文件通过本地相对路径导入praisonai-ts源码需在仓库内以源码方式运行multi-provider.ts需要三个 Provider 的密钥齐全才能拿到 3/3 的成功统计。更多 API 细节可参考 PraisonAI 官方文档站点对应的 AI SDK 章节docs.praisonai.com 的 js/ai-sdk 与 js/ai-sdk-cli 页面。【免费下载链接】PraisonAIPraisonAI — Hire a 24/7 AI Workforce. Stop writing boilerplate and start shipping autonomous self-improving agents that research, plan, code, and execute tasks. Deployed in 5 lines of code with built-in memory, RAG, and support for 100 LLMs.项目地址: https://gitcode.com/GitHub_Trending/pr/PraisonAI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门