En este artículo, aprenderemos cómo crear un agente personalizado que utiliza un llm de código abierto (llama3.1) que se ejecuta localmente en nuestra PC. También usaremos Ollama y LangChain.
Sigue las instrucciones según tu tipo de sistema operativo en su archivo README de GitHub para instalar Ollama:
https://github.com/ollama/ollama
Estoy en una PC basada en Linux, así que voy a ejecutar el siguiente comando en mi terminal:
curl -fsSL https://ollama.com/install.sh | sh
Obtenga el modelo LLM disponible mediante el siguiente comando:
ollama pull llama3.1
Esto descargará la versión etiquetada predeterminada del modelo. Normalmente, el valor predeterminado apunta al modelo más reciente y con parámetros de tamaño más pequeño. En este caso, será el modelo llama3.1:8b.
Para descargar otra versión del modelo, puede ir a: https://ollama.com/library/llama3.1 y seleccionar la versión a instalar, y luego ejecutar el comando ollama pull con el modelo y su número de versión. . Ejemplo: ollama pull llama3.1:70b
En Mac, los modelos se descargarán en ~/.ollama/models
En Linux (o WSL), los modelos se almacenarán en /usr/share/ollama/.ollama/models
Ejecute el siguiente comando para iniciar ollama sin ejecutar la aplicación de escritorio.
ollama serve
Todos los modelos se sirven automáticamente en localhost:11434
Cree una nueva carpeta en su computadora y luego ábrala con un editor de código como VS Code.
Abre la terminal. Utilice el siguiente comando para crear un entorno virtual .venv y activarlo:
python3 -m venv .venv
source .venv/bin/activate
Ejecute el siguiente comando para instalar langchain y langchain-ollama:
pip install -U langchain langchain-ollama
El comando anterior instalará o actualizará los paquetes LangChain y LangChain-Ollama en Python. El indicador -U garantiza que se instalen las últimas versiones de estos paquetes, reemplazando cualquier versión anterior que ya esté presente.
Cree un archivo Python, por ejemplo: main.py y agregue el siguiente código:
from langchain_ollama import ChatOllama from langchain.agents import tool from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain.agents.format_scratchpad.openai_tools import ( format_to_openai_tool_messages, ) from langchain.agents import AgentExecutor from langchain.agents.output_parsers.openai_tools import OpenAIToolsAgentOutputParser llm = ChatOllama( model="llama3.1", temperature=0, verbose=True ) @tool def get_word_length(word: str) -> int: """Returns the length of a word.""" return len(word) tools = [get_word_length] prompt = ChatPromptTemplate.from_messages( [ ( "system", "You are very powerful assistant", ), ("user", "{input}"), MessagesPlaceholder(variable_name="agent_scratchpad"), ] ) llm_with_tools = llm.bind_tools(tools) agent = ( { "input": lambda x: x["input"], "agent_scratchpad": lambda x: format_to_openai_tool_messages( x["intermediate_steps"] ), } | prompt | llm_with_tools | OpenAIToolsAgentOutputParser() ) # Create an agent executor by passing in the agent and tools agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) result = agent_executor.invoke({"input": "How many letters in the word educa"}) if result: print(f"[Output] --> {result['output']}") else: print('There are no result..')
El fragmento de código anterior configura un agente LangChain utilizando el modelo ChatOllama (llama3.1) para procesar la entrada del usuario y utilizar una herramienta personalizada que calcula la longitud de las palabras. Define una plantilla de solicitud para el agente, vincula la herramienta al modelo de lenguaje y construye un agente que procesa la entrada y formatea los pasos intermedios. Finalmente, crea un AgentExecutor para invocar al agente con una entrada específica. Pasamos una pregunta simple para preguntar "Cuántas letras tiene la palabra educa" y luego imprimimos el resultado o indicamos si no se encontró ningún resultado.
Cuando ejecutamos, obtenemos el siguiente resultado:
> Entering new AgentExecutor chain... Invoking: `get_word_length` with `{'word': 'educa'}` 5The word "educa" has 5 letters. > Finished chain. [Output] --> The word "educa" has 5 letters.
Ves que el agente usó el modelo (llama3.1) para llamar a la herramienta correctamente y obtener el recuento de letras de la palabra.
Gracias por leer.
Consulta el repositorio de Ollama aquí: https://github.com/ollama/ollama
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3