Agentic:TypeScript AI Agent标准库的完整指南
·
Agentic:TypeScript AI Agent标准库的完整指南
概述
Agentic是一个专为AI Agent设计的TypeScript标准库,它提供了与任何LLM和TypeScript AI SDK无缝协作的能力。这个库的核心目标是简化AI函数的创建、管理和集成,让开发者能够专注于业务逻辑而不是底层实现细节。
核心特性
1. 跨SDK兼容性
Agentic支持所有主流TypeScript AI SDK,包括:
| SDK名称 | 适配器包 | 主要特点 |
|---|---|---|
| Vercel AI SDK | @agentic/ai-sdk |
官方Vercel生态集成 |
| LangChain | @agentic/langchain |
成熟的AI应用框架 |
| LlamaIndex | @agentic/llamaindex |
数据检索和查询优化 |
| Firebase Genkit | @agentic/genkit |
Google Firebase生态集成 |
| Dexa Dexter | @agentic/dexter |
对话式AI专用框架 |
| OpenAI SDK | 原生支持 | 直接函数调用支持 |
2. 统一函数管理
Agentic通过AIFunctionSet类提供了强大的函数管理能力:
// 创建函数集合
const functionSet = new AIFunctionSet([weatherClient, searchClient])
// 选择特定函数
const selectedFunctions = functionSet.pick('get_current_weather', 'search_news')
// 排除特定函数
const filteredFunctions = functionSet.omit('send_email', 'make_call')
// 映射处理
const functionSpecs = functionSet.map(fn => fn.spec)
3. 类型安全的设计
基于Zod schema验证,确保输入输出的类型安全:
@aiFunction({
name: 'get_current_weather',
description: '获取指定位置的当前天气信息',
inputSchema: z.object({
q: z.string().describe('位置查询,可以是城市名、邮编、IP地址或经纬度坐标')
})
})
async getCurrentWeather(query: { q: string }) {
// 实现逻辑
}
架构设计
核心组件
函数调用流程
快速开始
安装基础包
npm install @agentic/stdlib @agentic/core zod
基本使用示例
import { WeatherClient } from '@agentic/stdlib'
// 初始化天气客户端
const weather = new WeatherClient()
// 直接调用
const result = await weather.getCurrentWeather({
q: 'San Francisco'
})
console.log(result)
与AI SDK集成
import { openai } from '@ai-sdk/openai'
import { generateText } from 'ai'
import { createAISDKTools } from '@agentic/ai-sdk'
import { WeatherClient } from '@agentic/stdlib'
const weather = new WeatherClient()
const result = await generateText({
model: openai('gpt-4o-mini'),
tools: createAISDKTools(weather),
toolChoice: 'required',
prompt: '旧金山现在的天气如何?'
})
console.log(result.toolResults[0])
服务提供商集成
Agentic支持30+种服务提供商,涵盖各个领域:
搜索类服务
| 服务 | 包名 | 功能描述 |
|---|---|---|
| Bing搜索 | @agentic/bing |
微软Bing网页搜索API |
| Exa搜索 | @agentic/exa |
专为LLM优化的网页搜索 |
| Serper搜索 | @agentic/serper |
Google搜索API封装 |
| Tavily搜索 | @agentic/tavily |
AI优化的搜索服务 |
数据类服务
| 服务 | 包名 | 功能描述 |
|---|---|---|
| Clearbit | @agentic/clearbit |
人员和公司数据丰富 |
| Hunter | @agentic/hunter |
邮箱查找和验证 |
| Proxycurl | @agentic/proxycurl |
LinkedIn数据获取 |
| People Data Labs | @agentic/people-data-labs |
人员数据服务 |
工具类服务
| 服务 | 包名 | 功能描述 |
|---|---|---|
| 计算器 | @agentic/calculator |
数学表达式计算 |
| E2B代码解释器 | @agentic/e2b |
Python代码沙箱执行 |
| 天气 | @agentic/weather |
天气数据查询 |
| Wolfram Alpha | @agentic/wolfram-alpha |
计算和科学问答 |
高级用法
函数组合和筛选
import { PerigonClient, SerperClient } from '@agentic/stdlib'
import { createAIRunner } from '@dexaai/dexter'
import { createDexterFunctions } from '@agentic/dexter'
const perigon = new PerigonClient()
const serper = new SerperClient()
const runner = createAIRunner({
chatModel: new ChatModel({ model: 'gpt-4o-mini' }),
functions: createDexterFunctions(
perigon.functions.pick('search_news_stories'),
serper.functions
),
systemMessage: '你是一个有帮助的助手,请尽可能简洁。'
})
const result = await runner('总结关于国际选举的最新新闻动态。')
自定义AI函数创建
import { createAIFunction } from '@agentic/core'
import { z } from 'zod'
const getUserInfo = createAIFunction(
{
name: 'get_user_info',
description: '根据用户ID获取用户信息',
inputSchema: z.object({
userId: z.string().describe('用户唯一标识符')
})
},
async ({ userId }) => {
// 实现获取用户信息的逻辑
return await fetchUserFromDatabase(userId)
}
)
最佳实践
1. 环境变量管理
// 使用内置的getEnv函数安全获取环境变量
import { getEnv } from '@agentic/core'
const apiKey = getEnv('WEATHER_API_KEY')
2. 错误处理
try {
const result = await weather.getCurrentWeather({ q: location })
} catch (error) {
if (error instanceof RetryableError) {
// 可重试错误
await retryOperation()
} else if (error instanceof AbortError) {
// 操作中止
console.log('操作被用户取消')
}
}
3. 性能优化
// 使用单个包而不是stdlib来减小打包体积
import { WeatherClient } from '@agentic/weather' // 而不是 @agentic/stdlib
// 按需导入函数
const { getCurrentWeather } = weather.functions.get('get_current_weather')
常见问题解答
Q: Agentic与其他AI SDK有什么区别?
A: Agentic不是替代品,而是补充。它提供了标准化的函数接口,可以在不同SDK之间共享和复用。
Q: 如何添加自定义服务?
A: 继承AIFunctionsProvider类并使用@aiFunction装饰器标记要暴露的方法。
Q: 支持服务端和客户端使用吗?
A: 是的,Agentic设计为同构库,支持Node.js、浏览器和其他JavaScript环境。
总结
Agentic为TypeScript AI开发带来了标准化和互操作性,通过统一的函数接口和强大的管理能力,显著降低了AI应用开发的复杂度。无论是简单的天气查询还是复杂的多服务集成,Agentic都能提供优雅的解决方案。
主要优势:
- 🚀 开箱即用的30+服务集成
- 🔄 跨SDK无缝兼容
- 🛡️ 类型安全的Zod验证
- 🧩 模块化的函数管理
- ⚡ 优化的性能设计
开始使用Agentic,让你的AI应用开发更加高效和愉悦!
更多推荐
所有评论(0)