Aprendizagem pessoal com IA
e orientação prática
Sapo pintado em alumínio

Implementação de um agente local com Ollama+LangChain

breve

O ReAct (Reasoning and Acting) é uma estrutura que combina raciocínio e ação para aprimorar o desempenho das inteligências em tarefas complexas. A estrutura permite que as inteligências realizem tarefas de forma mais eficaz em ambientes dinâmicos, integrando fortemente o raciocínio lógico com a ação prática.

Implementação do agente local-1 com Ollama+LangChain


Fonte:ReAct: raciocínio e ação trabalhando juntos em um modelo de linguagem grande

Este documento descreve como usar o ReAct A estrutura está em Ollama O agente local (Agent) é implementado no Ollama. Ao combinar o poder do Ollama com a flexibilidade do ReAct, os usuários podem criar um agente interativo eficiente em seu ambiente local. Essa implementação é capaz de lidar com tarefas complexas, suporta vários modos de interação e otimiza a automação de tarefas e a experiência do usuário para aplicativos locais que exigem alto desempenho em tempo real.

Observação: este documento contém trechos do código principal e explicações detalhadas. O código completo pode ser encontrado em notebook .

 

1. importação de dependências

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 a ferramenta Agente

definir Entrada de pesquisa herança de classe BaseModelque é usado para definir o modo dos dados de entrada.

@tool(args_schema=SearchInput) Decoração com decoradores de ferramentas previsão do tempo e especifique seu modo de entrada como Entrada de pesquisa.

class SearchInput(BaseModel).
Location: str = Field(description="location to search for") # Defina um modelo Pydantic que descreva o esquema de entrada com informações de descrição
@tool(args_schema=SearchInput)
def weather_forecast(location: str).
"""Weather_forecast_tool.""""
print(f "Weather for {location}") # imprime o local para o qual a previsão do tempo será feita
return f "A dummy forecast for {location}" # Retorna uma previsão do tempo fictícia para o local fornecido.

 

3. operações locais

Neste exemplo, use gemma:2b o resultado pode ser muito diferente para diferentes tipos de modelos (mais aleatoriedade).

llm = ChatOllama(model="gemma:2b") # Inicializar o modelo ChatOllama, usando "gemma:2b"
tools = [weather_forecast] # Usar a ferramenta weather_forecast
prompt = hub.pull("hwchase17/react-json") # Extrair prompts específicos do hub
prompt = prompt.partial(
tools=render_text_description(tools), # renderizar uma descrição de texto das ferramentas para o prompt
tool_names=", ".join([t.name for t in tools]), # Concatena os nomes das ferramentas em uma cadeia de caracteres separada por vírgulas
)
agent = create_react_agent(llm, tools, prompt) # Criar um agente usando llm, ferramentas e prompts personalizados
agent_executor = AgentExecutor(agent=agent, tools=tools, handle_parsing_errors=True, verbose=False, format="json") # Inicializar o AgentExecutor
print(agent_executor.invoke({"input": "What is the weather in Paris?"})) # Invoque o agente com a entrada de teste e imprima os resultados

 

Uso do histórico de diálogos

Ao usar o histórico de diálogo, você precisa usar a opção react-chat Modelo de prompt. No momento da invocação, adicione o chat_history.

O # extrai um prompt específico, observe que o react-chat é usado aqui
prompt = hub.pull("hwchase17/react-chat")
# Crie o agente ReAct
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? Use uma ferramenta somente se necessário, caso contrário, responda com Final Answer",
"chat_history": "Humano: Olá! Meu nome é Bob\nAI: Olá Bob! Prazer em conhecê-lo", }
Prazer em conhecê-lo", }
Prazer em conhecê-lo", }

 

bibliografia

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

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

CDN1
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Implementação de um agente local com Ollama+LangChain

Chefe do Círculo de Compartilhamento de IA

O Chief AI Sharing Circle se concentra no aprendizado de IA, fornecendo conteúdo abrangente de aprendizado de IA, ferramentas de IA e orientação prática. Nosso objetivo é ajudar os usuários a dominar a tecnologia de IA e explorar juntos o potencial ilimitado da IA por meio de conteúdo de alta qualidade e compartilhamento de experiências práticas. Seja você um iniciante em IA ou um especialista sênior, este é o lugar ideal para adquirir conhecimento, aprimorar suas habilidades e realizar inovações.

Entre em contato conosco
pt_BRPortuguês do Brasil