"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cree su propio agente LLM personalizado utilizando modelos de código abierto (llama)

Cree su propio agente LLM personalizado utilizando modelos de código abierto (llama)

Publicado el 2024-10-31
Navegar:132

Create your own Custom LLM Agent Using Open Source Models (llama)

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.

Describir

  • Instalar Ollama
  • Extraer modelo
  • Modelo de servicio
  • Crea una nueva carpeta, ábrela con un editor de código
  • Crear y activar entorno virtual
  • Instalar langchain langchain-ollama
  • Crear agente personalizado con modelo de código abierto en Python
  • Conclusión

Instalar Ollama

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

modelo de tracción

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

modelo de servicio

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

Crea una nueva carpeta, ábrela con un editor de código.

Cree una nueva carpeta en su computadora y luego ábrala con un editor de código como VS Code.

Crear y activar entorno virtual

Abre la terminal. Utilice el siguiente comando para crear un entorno virtual .venv y activarlo:

python3 -m venv .venv
source .venv/bin/activate

Instalar langchain langchain-ollama

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 agente personalizado con un modelo de código abierto en Python

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.

Conclusión

Gracias por leer.

Consulta el repositorio de Ollama aquí: https://github.com/ollama/ollama

Declaración de liberación Este artículo se reproduce en: https://dev.to/emmakodes_/create-your-own-custom-llm-agent-using-open-source-models-llama31-4aag?1 Si hay alguna infracción, comuníquese con Study_golang @163.com eliminar
Último tutorial Más>

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