Implantación de un agente local con Ollama+LangChain

吐司AI

breve

ReAct (Reasoning and Acting) es un marco que combina el razonamiento y la acción para mejorar el rendimiento de las inteligencias en tareas complejas. El marco permite a las inteligencias realizar tareas con mayor eficacia en entornos dinámicos integrando estrechamente el razonamiento lógico con la acción práctica.

使用 Ollama+LangChain 实现本地 Agent

Fuente:ReAct: razonamiento y acción en un gran modelo lingüístico

Este documento describe cómo utilizar el ReAct El marco está en Ollama Implementación de un agente local en ReAct. Combinando la potencia de Ollama con la flexibilidad de ReAct, los usuarios pueden crear un agente interactivo eficiente en su entorno local. Esta implementación es capaz de gestionar tareas complejas, admite múltiples modos de interacción y optimiza la automatización de tareas y la experiencia del usuario para aplicaciones locales que requieren un alto rendimiento en tiempo real.

Nota: Este documento contiene fragmentos de código básico y explicaciones detalladas. El código completo se encuentra en cuaderno .

 

1. Importación de dependencias

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. Inicializar la herramienta Agente

defina SearchInput herencia de clases BaseModelque se utiliza para definir el modo de los datos de entrada.

@tool(args_schema=SearchInput) Decoración con decoradores de herramientas weather_forecast y especifique su modo de entrada como 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. Operaciones locales

En este ejemplo, utilice gemma:2b el resultado puede ser muy diferente para distintos tipos de modelos (más aleatoriedad).

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?"}))  # 使用测试输入调用代理并打印结果

 

Utilizar el historial de diálogos

Cuando se utiliza el historial de diálogos, es necesario utilizar la opción react-chat Plantilla de consulta. En el momento de la invocación, añada el campo 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",
}
)

 

bibliografía

https://react-lm.github.io/

https://python.langchain.com/v0.1/docs/modules/agents/agent_types/react/

© declaración de copyright
AiPPT

Artículos relacionados

Sin comentarios

ninguno
Sin comentarios...