Langchain调用工具arxiv为例| 豆包MarsCode AI刷题

163 阅读3分钟

LangChain是一个设计用于促进语言模型(LLMs)和各种工具之间交互的框架。它提供了一种机制,使得开发者能够将不同的数据源、APIs以及其他服务作为“工具”来使用,从而让这些工具通过大模型的能力进行智能的选择和利用。arXiv作为一个在线数据库,包含了物理、数学、计算机科学等多个领域的预印本论文,是研究者获取最新研究成果的重要资源之一。将arXiv集成到LangChain中,不仅能够帮助研究人员快速定位相关文献,还能通过AI的力量对信息进行更深层次的理解与分析。

arXiv工具的设计与实现

  1. 工具定义 输入:用户查询或指令,例如:“查找关于深度学习的最新论文”。 输出:根据用户的请求返回相应的论文列表及其摘要等信息。 处理逻辑: 使用arXiv API搜索相关的论文。 对搜索结果进行过滤和排序。 提取每篇论文的关键信息(如标题、作者、摘要等)。 将整理好的信息以结构化的形式返回给调用方。
  2. 技术栈 后端:Python,Flask/Django等Web框架 前端:可选,如果需要开发图形界面的话,可以考虑React或Vue.js 数据库:SQLite, PostgreSQL等,用来缓存部分数据减少对外部API的依赖 API接口:直接调用arXiv提供的官方API或者使用第三方库如arxiv Python包 集成过程详解
  3. 设置环境 首先确保安装了必要的软件包,包括langchain本身及与arXiv交互所需的库。

当代理接收到一个任务时,它会根据任务的类型和需求,通过大模型的推理,来选择合适的工具处理这个任务。这个选择过程可以基于各种策略,例如基于工具的性能,或者基于工具处理特定类型任务的能力。

一旦选择了合适的工具,LangChain就会将任务的输入传递给这个工具,然后工具会处理这些输入并生成输出。这个输出又经过大模型的推理,可以被用作其他工具的输入,或者作为最终结果,被返回给用户。

在使用langchain调用工具时可以使用以下代码块进行加载(有时需要使用LLM进行调用)

from langchain.agents import load_tools
tools_name = [...]
llm=[...]
tools = load_tools(tools_name,llm=llm)

arXiv本身就是一个论文研究的利器,里面的论文数量比AI顶会还早、还多、还全。那么把它以工具的形式集成到LangChain中,能让你在研究学术最新进展时如虎添翼。 我们使用langchain对arxiv工具进行调用,用来开发一个科研助理。

import os
from langchain_openai import ChatOpenAI
from langchain.agents import load_tools, initialize_agent, AgentType

#初始模型和工具
api_key = os.environ.get("ARK_API_KEY")
model = os.environ.get("LLM_MODELEND")
url="https://ark.cn-beijing.volces.com/api/v3"
llm = ChatOpenAI(
    openai_api_key=api_key,
    openai_api_base=url,
    model=model,
    temperature=0.0
)
tools = load_tools(
    ["arxiv"],
)

#初始化链
agent_chain = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
    handle_parsing_errors=True,
)
#运行链
# agent_chain.run("paper id=2005.14165, 描述论文的主要创新点")
agent_chain.run("介绍一下标题为Language Models are Few-Shot Learners这篇论文的创新点?")

chain运行的过程如下图所示,经过action和observation

屏幕截图 2024-11-22 221653.png 得到结果。

屏幕截图 2024-11-22 221745.png