适用于AI代理的最佳预构建工具包

2025年02月14日 由 alex 发表 4539 0

4


基于Python和TypeScript的AI代理框架,如CrewAI、LangChain、Agno和Vercel AI SDK,允许开发人员构建包含多个代理的AI应用程序,这些代理可以作为计算机使用代理或深度研究代理,来自动化浏览器任务,如点击、滚动、在网上订购产品以及执行复杂的多步骤任务。这些多AI代理可以组合在一起协作,并将其任务交接给其他代理以解决复杂问题。虽然上述代理框架能帮助你快速构建多代理系统,但你可能很快就会意识到,对于企业级的代理系统,你还需要外部工具来装备这些代理。借助工具和工具包,你可以将AI助手连接到无限数量的应用程序,例如聊天应用以检索频道信息,视频会议以分析通话参与者的情绪等。


AI代理和外部工具概述


5


AI代理的主要组件之一是一个大型语言模型(LLM),它驱动代理执行其操作。通常,这些LLM只能使用其训练数据来回答用户查询。尽管训练数据可能是一个庞大的数据集,但它只允许LLM与内部世界进行交互。然而,当你构建AI代理时,你可以为它们提供解锁外部世界并借助工具访问广泛知识的钥匙。为代理提供所需的工具有助于扩展LLM的内置专业知识,并增强对提示的响应。


什么是代理工具?


6


工具定义了一种大型语言模型(LLM)可以调用的动作,以增强对用户查询的响应。根据用户的提示,工具可以与外部应用程序(如YouTube、Gmail、Slack、Yahoo Finance API和Zoom)进行交互。另一方面,工具包包含一组即用型的工具或函数,代理可以调用这些工具或函数来提供精确答案。如果你希望代理抓取网页或查看今天的日历,都有特定的工具可以完成这些任务。


在上面的图中,用户可能会询问特定位置的当前天气状况。如果提供了像Tavily或DuckDuckGo实时网络搜索这样的天气工具,LLM就会检索它,以便代理能够准确回应用户的查询。


代理工具包是一系列即用型的功能,开发人员可以从外部来源将其添加到他们的多代理AI应用程序中,以实现特定目标或执行特定任务。可以将其比作在现实世界场景中,团队成员可能需要配备的各种工具,以更有效地执行他们的日常任务。使用工具包,你可以轻松地将LLM和代理连接到外部应用程序,如GitHub、Slack和Linear,以实现任务管理、提高生产力等。


为什么将外部工具与代理集成?

使用工具,你可以将代理连接到外部服务,以在代理工作流程中执行和触发动作。通过像Composio这样的工具访问框架,你可以轻松连接多个工具,并在单个监控仪表板上管理它们的身份验证,以适用于多代理。

  • 开箱即用的支持:大多数工具与LLM模型和代理框架无关。它们可以使用像Agno、CrewAI、LangChain等代理构建平台,以及Agentic.so等库,立即与你的现有代理基础设施一起工作。
  • 工具包库:访问并将你的代理连接到250多个外部应用程序,用于网页浏览、任务管理、搜索等。
  • 混合搭配:数百种可用的代理工具包供你混合搭配,以使用领先的AI代理库解决特定问题或实现特定目标。


问题:创建一个没有工具的基本代理


7


上面的图表展示了AI代理的基本操作。


# Create an agent without a tool (basic inference tasks)
# agent_without_tool.py
from agno.agent import Agent
from agno.models.openai import OpenAIChat
agent = Agent()
agent.print_response("What is the weather in Helsinki?", markdown=True)


如上图所示,模型无法从网络提供实时信息,因为它无法访问工具。让我们通过在代理的定义中指定一个工具来解决这个问题。


解决方案:为基本代理配备工具。


8


为了解决上述问题,我们将AI代理连接到Tavily,使用下面的示例代码提供实时、准确的网络搜索结果。


import os
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.tavily import TavilyTools
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Use token from .env file
os.environ["TAVILY_API_KEY"] = os.getenv("TAVILY_API_KEY")
agent = Agent(tools=[TavilyTools()], show_tool_calls=True)
agent.print_response("What is the weather in Helsinki?", markdown=True)


运行上面的示例代码将使用外部工具(Tavily)显示类似于下图的输出。


9


常见的代理工具包和应用场景


10


代理工具包可以出于多种原因并在不同的应用场景中集成到AI应用程序中。可以为代理添加外部工具,使它们能够直接感知和影响现实世界。例如,如前所述,你可以通过代理工具访问Tavily网络搜索API,以呈现实时天气信息或时事新闻。


11


如上图所示,你可以在许多方面利用工具来开发AI代理应用程序,从市场到按需服务等。以下是一些关键的应用领域,在这些领域中,你可以为代理配备工具,以便更准确地、更好地了解现实世界。


医疗保健

你可以混合搭配多个代理工具来解决医疗保健问题。想象一下一个远程医疗应用程序;我们可以在应用程序中构建一个AI代理,并为其配备像Tavily这样的工具,以便患者能够实时搜索附近的医生。医生可以使用Cal.com来安排他们的可预约时间。此外,我们还可以为代理配备Resend,以安排患者-医生预约的电子邮件通知。


项目管理

使用工具,你可以构建一个AI助手,用于在Linear或Jira中协调和管理不同团队的项目。在这种情况下,AI代理将负责提供有关任务状态、团队成员的可用性以及特定项目的截止日期的准确信息。


from agno.agent import Agent
from agno.tools.linear_tools import LinearTool
agent = Agent(
    name="Linear Tool Agent",
    tools=[LinearTool()],
    show_tool_calls=True,
    markdown=True,
)
agent.print_response("Show all the issues assigned to user id: 103348")


上面的代码片段展示了一个代理,它可以使用Agno在Linear中显示分配给特定用户的所有问题。


学术研究

通过为多代理AI应用程序及其训练知识添加Arxiv等外部工具的功能,你可以为学生和学术研究人员创建一个AI聊天机器人,使他们能够快速分析学术研究论文。


以下示例代理负责使用Agno在Arxiv上搜索主题。


from agno.agent import Agent
from agno.tools.arxiv_toolkit import ArxivToolkit
agent = Agent(tools=[ArxivToolkit()], show_tool_calls=True)
agent.print_response("Search arxiv for 'language models'", markdown=True)


复杂数据分析

在使用AI系统分析复杂数据时,你可以将CSV搜索工具与代理连接,以执行高效的检索增强生成(RAG)。搜索工具可以帮助代理使用语义搜索从CSV文档中提取信息。


from crewai_tools import CSVSearchTool
# Initialize the tool with a specific CSV file.
# This setup allows the agent to only search the given CSV file.
tool = CSVSearchTool(csv="weather_data.csv")
# OR
# Initialize the tool without a specific CSV file.
# Agent will need to provide the CSV path at runtime.
tool = CSVSearchTool()
tool = CSVSearchTool(
    config=dict(
        llm=dict(
            provider="openai",  # or google, openai, anthropic, llama2, ...
            config=dict(
                model="gpt-4o",
                temperature=0.5,
                top_p=1,
                stream=True,
            ),
        ),
        embedder=dict(
            provider="openai",  # or openai, ollama, ...
            config=dict(
                model="text-embedding-3-small",
            ),
        ),
    )
)
print(tool.run("Where did Light shower rain occurred?"))


金融

可以将来自Yahoo Finance、Pandas和OpenBB的API工具集成到代理中,以提供财务建议、从CSV中可视化财务数据,并提供有关公司及其股票新闻的信息。


为代理配备外部工具的优势

在许多情况下,将AI代理连接到外部工具是很有帮助的。

  • 响应准确性:为你的AI助手提供实时且准确的搜索结果。
  • 信任:提高对用户查询响应的信任度和可靠性。
  • 实时访问:始终检索并呈现实时信息,以确保快速且更好的大型语言模型(LLM)决策,并防止产生幻觉。
  • 即插即用:无论是否有API密钥,设置都很简单,并且可以无缝集成到你的多代理AI系统中。
  • 通过基于相关性检索信息来增强代理工作流程。
  • 知识可扩展性:在代理工作流程中,通过工具将外部系统连接到大型语言模型(LLM),有助于扩展其知识。
  • 通常,像Agno、CrewAI和LangChain这样的AI代理框架会在代理的基础设施中原生地实现工具。
  • 外部能力:代理工具有助于弥合基础AI模型与其访问外部世界之间的鸿沟。


AI代理的工具类型

你可以以不同的方式与代理集成工具和一组现成的应用程序套件。你可能更喜欢编写自己的自定义Python函数作为工具,使用来自外部API的预构建应用程序,或者安装像Composio这样的框架,以便轻松、快速且安全地访问多个工具。


使用纯Python和TypeScript函数

你可以在任何流行的AI代理框架中编写自定义的纯Python和TypeScript函数,作为代理的工具。下面的示例代码演示了一个Python函数get_top_hackernews_stories,它使用Agno从Hacker News获取顶级故事。


import json
import httpx
from agno.agent import Agent
def get_top_hackernews_stories(num_stories: int = 10) -> str:
    """Use this function to get top stories from Hacker News.
    Args:
        num_stories (int): Number of stories to return. Defaults to 10.
    Returns:
        str: JSON string of top stories.
    """
    # Fetch top story IDs
    response = httpx.get('https://hacker-news.firebaseio.com/v0/topstories.json')
    story_ids = response.json()
    # Fetch story details
    stories = []
    for story_id in story_ids[:num_stories]:
        story_response = httpx.get(f'https://hacker-news.firebaseio.com/v0/item/{story_id}.json')
        story = story_response.json()
        if "text" in story:
            story.pop("text", None)
        stories.append(story)
    return json.dumps(stories)
agent = Agent(tools=[get_top_hackernews_stories], show_tool_calls=True, markdown=True)
agent.print_response("Summarize the top 5 stories on hackernews?", stream=True)


运行上面的Python代码将显示与此预览类似的结果。


1_-MgTuOvVROEQt1-ye5FOyg


使用工具包并大规模管理它们

从根本上说,通过工具/工具包将外部应用程序集成到AI代理中更容易。然而,在代理系统中对这些外部应用程序进行身份验证和管理会变得繁琐。为了简化这一过程,你可以利用Composio和Toolhouse等平台。这两个平台都支持用Python和TypeScript构建的AI应用程序和代理。


使用Composio大规模集成外部工具

Composio是一个生产就绪的平台,用于将工具与大型语言模型(LLM)和AI代理应用程序集成,以构建复杂的工作流程。你可以从Composio开始,为你的基于Python的AI项目添加工具包,或者通过Agno、LangChain和CrewAI等AI框架使用它。在构建复杂的代理工作流程时,如果你的代理需要访问像Gmail、GitHub和Salesforce这样的应用程序,Composio将成为一个便捷的工具。


将Composio与Crew AI结合使用

让我们来看一个CrewAI和Composio集成的示例,该代理可以导航到给定的GitHub仓库并给其“加星”。


from composio_crewai import ComposioToolSet, App
from crewai import Agent, Task, Crew
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
import os
# Load environment variables from .env file
load_dotenv()
toolset = ComposioToolSet(api_key=os.getenv("COMPOSIO_API_KEY"))
llm = ChatOpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# request = toolset.initiate_connection(app=App.GITHUB)
# print(f"Open this URL to authenticate: {request.redirectUrl}")
crewai_agent = Agent(
    role="GitHub Agent",
    goal="You take action on GitHub using GitHub APIs",
    backstory="You are AI agent that is responsible for taking actions on GitHub on behalf of users using GitHub APIs",
    verbose=True,
    tools=toolset.get_tools(),
    llm=llm,
)
task = Task(
    description="Star the repo GetStream/stream-tutorial-projects on GitHub",
    agent=crewai_agent,
    expected_output="Status of the operation",
)
crew = Crew(agents=[crewai_agent], tasks=[task])
result = crew.kickoff()
print(result)


总结上面的示例代码,你需要安装CrewAI、Composio以及其他CrewAI依赖项。运行带有指定工具的代理需要API密钥来访问你选择的大型语言模型(LLM)、Composio和CrewAI。本示例使用OpenAI,并将所有所需的API密钥作为环境变量存储,如代码中所示。运行此示例将显示与下图类似的输出。


12


使用Toolhouse安装和管理外部应用程序。


13


Toolhouse是一个平台,允许开发人员构建、配置、运行、测试并将工具集成到大型语言模型(LLM)和代理中。其工具商店功能支持为代理安装不同的工具,类似于在手机上安装应用程序的方式。你可以通过选择你喜欢的库(Python或TypeScript)来开始使用Toolhouse。


在基于TypeScript的代理系统中使用外部工具

在撰写本文时,Python有无数的框架和库支持外部代理工具。另一方面,TypeScript只有少数几个。内置支持工具/工具包的最佳TypeScript AI SDK和库是Vercel AI SDK和Agentic.so。然而,随着AI领域的迅速发展,很快可能会出现许多基于TypeScript的框架和库,它们包含众多工具。


总结

本教程介绍了AI代理工具/工具包,为什么它们对AI应用程序至关重要,以及如何使用LangChain、CrewAI、Agno等领先的代理AI框架和Agentic.so库,在基于Python和TypeScript的AI项目中实现它们。

文章来源:https://medium.com/@amosgyamfi/the-best-pre-built-toolkits-for-ai-agents-59652e4727fe
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消