项目详情
深入了解 agentic 的功能与特性
介绍
这个项目的目标是创建一套标准的AI函数/工具,这些工具不仅适用于普通的TS使用,还能优化用于LLM应用,并且可以兼容所有主流的AI SDK(如LangChain、LlamaIndex、Vercel AI SDK、OpenAI SDK等)。
例如,像WeatherClient这样的标准库客户端可以作为普通的TS类使用:
import { WeatherClient } from '@agentic/stdlib'
const weather = new WeatherClient() // 需要设置`WEATHER_API_KEY`环境变量
const result = await weather.getCurrentWeather({
q: 'San Francisco'
})
console.log(result)
或者你可以将这些客户端用作基于LLM的工具,在这种情况下,LLM会决定何时以及如何调用底层函数。
通过适配器,这可以在所有主要的AI SDK上使用。以下是使用Vercel的AI SDK的示例:
// sdk特定的导入
import { openai } from '@ai-sdk/openai'
import { generateText } from 'ai'
import { createAISDKTools } from '@agentic/stdlib/ai-sdk'
// sdk无关的导入
import { WeatherClient } from '@agentic/stdlib'
const weather = new WeatherClient()
const result = await generateText({
model: openai('gpt-4o'),
// 这是使用`@agentic/stdlib/ai-sdk`适配器的关键行
tools: createAISDKTools(weather),
toolChoice: 'required',
prompt: 'What is the weather in San Francisco?'
})
console.log(result.toolResults[0])
你可以使用我们经过彻底测试的标准AI函数库与你喜欢的AI SDK,而无需编写任何胶水代码!
这是一个稍微复杂的示例,它使用了多个客户端并使用AIFunctionSet.pick方法选择它们的部分功能:
// sdk特定的导入
import { ChatModel, createAIRunner } from '@dexaai/dexter'
import { createDexterFunctions } from '@agentic/stdlib/dexter'
// sdk无关的导入
import { PerigonClient, SerperClient } from '@agentic/stdlib'
async function main() {
// Perigon是一个新闻API,Serper是一个Google搜索API
const perigon = new PerigonClient()
const serper = new SerperClient()
const runner = createAIRunner({
chatModel: new ChatModel({
params: { model: 'gpt-4o', temperature: 0 }
}),
functions: createDexterFunctions(
perigon.functions.pick('search_news_stories'),
serper
),
systemMessage: `你是一个有帮助的助手。请尽量简洁。`
})
const result = await runner(
'总结最新的关于即将到来的美国大选的新闻。'
)
console.log(result)
}
在这里,我们向LLM暴露了两个功能,search_news_stories(来自PerigonClient.searchStories方法)和serper_google_search(隐式来自SerperClient.search方法)。
所有的SDK适配器如createDexterFunctions都非常灵活,可以接受多种输入。AIFunctionLike对象包括:
AIFunctionSet- AI函数集(如perigon.functions.pick('search_news_stories')或perigon.functions或serper.functions)AIFunctionsProvider- 通过.functions属性暴露AIFunctionSet的客户端类(如perigon或serper)AIFunction- 单个函数(如perigon.functions.get('search_news_stories')或serper.functions.get('serper_google_search')或通过createAIFunction实用函数直接创建的AI函数)
你可以传递任意数量的AIFunctionLike对象,并可以通过.pick、.omit、.get、.map等方法将它们作为AIFunctionSet集合进行操作。
安装
npm install @agentic/stdlib
此包是仅ESM并且需要Node.js >= 18或等效的环境(如bun、deno、CF workers等)。
[!注意] 所有重第三方导入都被隔离为可选对等依赖项,以使主
@agentic/stdlib包尽可能轻量。
根据你要使用的AI SDK和工具,你还需要安装所需的对等依赖项。
服务
| 服务 | 客户端 | 描述 |
|---|---|---|
| Bing | BingClient | Bing网页搜索。 |
| Calculator | calculator | 用于简单数学表达式的基本计算器。 |
| Clearbit | ClearbitClient | 解析和丰富个人和公司数据。 |
| Dexa | DexaClient | 回答 |
来自世界顶级播客的问题。 |
| Diffbot | DiffbotClient | 网页分类和抓取;个人和公司数据丰富。 |
| E2B | e2b | 托管的Python代码解释器沙盒,非常适合数据分析、灵活的代码执行和即时高级推理。 |
| Exa | ExaClient | 针对LLM的网页搜索。 |
| Firecrawl | FirecrawlClient | 网站抓取和清理。 |
| HackerNews | HackerNewsClient | 官方的HackerNews API。 |
| Hunter | HunterClient | 电子邮件查找器、验证器和丰富工具。 |
| Jina | JinaClient | 干净的URL阅读器和网页搜索+URL顶级结果读取,提供慷慨的免费配额。 |
| Midjourney | MidjourneyClient | 非官方的Midjourney生成图像客户端。 |
| Novu | NovuClient | 发送通知(电子邮件、短信、应用内、推送等)。 |
| People Data Labs | PeopleDataLabsClient | 个人和公司数据(开发中)。 |
| Perigon | PerigonClient | 来自140,000多个来源的实时新闻API和网络内容数据。由AI结构化和丰富,为LLM优化。 |
| Polygon | PolygonClient | 股票市场和公司财务数据。 |
| PredictLeads | PredictLeadsClient | 深入的公司数据,包括筹资事件、招聘新闻、产品发布、使用的技术等信号。 |
| Proxycurl | ProxycurlClient | 来自LinkedIn和Crunchbase的个人和公司数据。 |
| Scraper | ScraperClient | 将URL抓取为干净的html/markdown/text内容(TODO:目前为封闭测试版)。 |
| Searxng | SearxngClient | 开源元搜索引擎,能够跨多个提供者进行搜索,如Reddit、Google、Brave、Arxiv、Genius、IMDB、烂番茄、维基数据、Wolfram Alpha、YouTube、GitHub,等。 |
| SerpAPI | SerpAPIClient | SerpAPI的Google搜索轻量级包装器。 |
| Serper | SerperClient | Serper的Google搜索轻量级包装器。 |
| Slack | SlackClient | 发送和接收Slack消息。 |
| SocialData | SocialDataClient | 非官方的Twitter / X客户端(只读),比官方Twitter API便宜得多。 |
| Tavily | TavilyClient | 针对LLM优化的网页搜索API。 |
| Twilio | TwilioClient | Twilio对话API,用于发送和接收短信。 |
| Twitter | TwitterClient | 获取用户、推文和搜索最近推文的基本Twitter API方法。支持计划感知的速率限制。使用Nango进行OAuth支持。 |
| WeatherAPI | WeatherClient | 基于位置的当前天气数据。 |
| Wikipedia | WikipediaClient | 维基百科页面搜索和摘要。 |
| Wolfram Alpha | WolframAlphaClient | Wolfram Alpha LLM API客户端,用于回答计算、数学和科学问题。 |
请注意,许多这些客户端暴露了多个AI功能。
复合工具
SearchAndCrawl
AI SDK
- OpenAI SDK
- 不需要适配器;使用
AIFunctionSet.specs或AIFunctionSet.toolSpecs
- 不需要适配器;使用
- Vercel AI SDK
import { createAISDKTools } from '@agentic/stdlib/ai-sdk'
- LangChain
import { createLangChainTools } from '@agentic/stdlib/langchain'
- LlamaIndex
import { createLlamaIndexTools } from '@agentic/stdlib/llamaindex'
- Firebase Genkit
import { createGenkitTools } from '@agentic/stdlib/genkit'
- Dexa Dexter
import { createDexterFunctions } from '@agentic/stdlib/dexter'
参见示例目录,了解如何使用每个这些适配器的示例。
客户端目标
- 客户端应尽量简洁
- 客户端应尽可能使用
ky和zod - 客户端应具有强类型TS DX
- 客户端应通过
@aiFunction(...)装饰器暴露选择的方法inputSchemazod schema应尽量简洁,描述专为LLM使用而设计
- 客户端和AIFunction应可通过
AIFunctionSet组合 - 客户端应支持所有主要的TS AI SDK
- SDK适配器应尽量轻量,并作为
@agentic/stdlib的可选对等依赖项
- SDK适配器应尽量轻量,并作为