LangChain是一个设计用于促进语言模型(LLMs)和各种工具之间交互的框架。它提供了一种机制,使得开发者能够将不同的数据源、APIs以及其他服务作为“工具”来使用,从而让这些工具通过大模型的能力进行智能的选择和利用。arXiv作为一个在线数据库,包含了物理、数学、计算机科学等多个领域的预印本论文,是研究者获取最新研究成果的重要资源之一。将arXiv集成到LangChain中,不仅能够帮助研究人员快速定位相关文献,还能通过AI的力量对信息进行更深层次的理解与分析。
arXiv工具的设计与实现
- 工具定义 输入:用户查询或指令,例如:“查找关于深度学习的最新论文”。 输出:根据用户的请求返回相应的论文列表及其摘要等信息。 处理逻辑: 使用arXiv API搜索相关的论文。 对搜索结果进行过滤和排序。 提取每篇论文的关键信息(如标题、作者、摘要等)。 将整理好的信息以结构化的形式返回给调用方。
- 技术栈 后端:Python,Flask/Django等Web框架 前端:可选,如果需要开发图形界面的话,可以考虑React或Vue.js 数据库:SQLite, PostgreSQL等,用来缓存部分数据减少对外部API的依赖 API接口:直接调用arXiv提供的官方API或者使用第三方库如arxiv Python包 集成过程详解
- 设置环境 首先确保安装了必要的软件包,包括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
得到结果。