Реализация локального агента с помощью Ollama+LangChain

краткое содержание

ReAct (Reasoning and Acting) - это система, объединяющая рассуждения и действия для повышения эффективности интеллекта при выполнении сложных задач. Эта система позволяет интеллекту более эффективно выполнять задачи в динамичной среде, тесно объединяя логические рассуждения с практическими действиями.

使用 Ollama+LangChain 实现本地 Agent

Источник:ReAct: совместная работа рассуждений и действий в большой языковой модели

В этом документе описано, как использовать ReAct Рамка находится в Оллама Локальный агент (Agent) реализован в Ollama. Сочетая возможности Ollama и гибкость ReAct, пользователи могут создать эффективного интерактивного агента в своей локальной среде. Эта реализация способна решать сложные задачи, поддерживает несколько режимов взаимодействия и оптимизирует автоматизацию задач и пользовательский опыт для локальных приложений, требующих высокой производительности в реальном времени.

Примечание: Этот документ содержит основные фрагменты кода и подробные объяснения. Полный код можно найти по адресу ноутбук .

 

1. Импорт зависимостей

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. Инициализация инструмента Agent

определить SearchInput наследование классов BaseModel, который используется для определения режима входных данных.

@tool(args_schema=SearchInput) Декорирование с помощью инструментов-декораторов weather_forecast и укажите его режим ввода как 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. локальная операция

В этом примере используйте gemma:2b модели, результаты могут сильно отличаться для разных типов моделей (больше случайности).

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

 

Использование истории диалогов

При работе с историей диалога необходимо использовать react-chat Шаблон подсказки. Во время вызова добавьте 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",
}
)

 

библиография

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

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

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...