Implémentation d'un agent local avec Ollama+LangChain
bref
ReAct (Reasoning and Acting) est un cadre qui combine le raisonnement et l'action pour améliorer les performances des intelligences dans des tâches complexes. Ce cadre permet aux intelligences d'accomplir des tâches plus efficacement dans des environnements dynamiques en intégrant étroitement le raisonnement logique et l'action pratique.

Source :ReAct : Raisonner et agir ensemble dans un grand modèle linguistique
Ce document décrit comment utiliser le ReAct Le cadre est en Ollama L'agent local (Agent) est implémenté dans Ollama. En combinant la puissance d'Ollama et la flexibilité de ReAct, les utilisateurs peuvent créer un agent interactif efficace dans leur environnement local. Cette implémentation est capable de gérer des tâches complexes, supporte de multiples modes d'interaction, et optimise l'automatisation des tâches et l'expérience utilisateur pour les applications locales nécessitant des performances élevées en temps réel.
Note : Ce document contient des extraits de code et des explications détaillées. Le code complet est disponible à l'adresse suivante carnet de notes .
1) Importer des dépendances
from langchain_core.tools import tool
from langchain.pydantic_v1 import BaseModel, Field
from langchain_core.tools import render_text_description
from langchain.agents import AgentExecutor, create_react_agent
from langchain import hub
from langchain_community.chat_models import ChatOllama
2. initialiser l'outil Agent
définir SearchInput
l'héritage des classes BaseModel
qui est utilisé pour définir le mode des données d'entrée.
@tool(args_schema=SearchInput)
Décoration à l'aide de décorateurs d'outils weather_forecast
et spécifier son mode d'entrée comme suit SearchInput
.
class SearchInput(BaseModel):
location: str = Field(description="location to search for") # 定义一个 Pydantic 模型,用于描述输入模式,并提供描述信息
@tool(args_schema=SearchInput)
def weather_forecast(location: str):
"""天气预报工具。"""
print(f"Weather for {location}") # 打印要预报天气的位置
return f"A dummy forecast for {location}" # 返回给定位置的虚拟天气预报
3. les opérations locales
Dans cet exemple, utilisez gemma:2b
les résultats peuvent être très différents selon les types de modèles (plus d'aléatoire).
llm = ChatOllama(model="gemma:2b") # 初始化 ChatOllama 模型,使用 "gemma:2b"
tools = [weather_forecast] # 使用 weather_forecast 工具
prompt = hub.pull("hwchase17/react-json") # 从 hub 拉取特定提示
prompt = prompt.partial(
tools=render_text_description(tools), # 为提示呈现工具的文本描述
tool_names=", ".join([t.name for t in tools]), # 将工具名称连接成一个以逗号分隔的字符串
)
agent = create_react_agent(llm, tools, prompt) # 使用 llm、工具和自定义提示创建代理
agent_executor = AgentExecutor(agent=agent, tools=tools, handle_parsing_errors=True, verbose=False, format="json") # 使用指定参数初始化 AgentExecutor
print(agent_executor.invoke({"input":"What is the weather in Paris?"})) # 使用测试输入调用代理并打印结果
Utiliser l'historique du dialogue
Lorsque vous utilisez l'historique du dialogue, vous devez utiliser l'option react-chat
Modèle d'invite. Au moment de l'appel, ajoutez l'élément chat_history
.
# 拉去特定提示,注意此处使用的是 react-chat
prompt = hub.pull("hwchase17/react-chat")
# 构建 ReAct agent
agent_history = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent_history, tools=tools, verbose=False)
agent_executor.invoke(
{
"input": "what's my name? Only use a tool if needed, otherwise respond with Final Answer",
"chat_history": "Human: Hi! My name is Bob\nAI: Hello Bob! Nice to meet you",
}
)
bibliographie
https://react-lm.github.io/
https://python.langchain.com/v0.1/docs/modules/agents/agent_types/react/
© déclaration de droits d'auteur
文章版权归 Cercle de partage de l'IA 所有,未经允许请勿转载。
Articles connexes
Pas de commentaires...