Inicio / Artículos

LangChain más Ollama: Cadenas Qwen locales, herramientas y estructura

Dirige langchain-ollama a una etiqueta Qwen local y obtén cadenas, transmisión en tiempo real, llamadas a herramientas y salida estructurada sin necesidad de claves en la nube. Configuración y peculiaridades a tener en cuenta.

Editor: REACTAPP.TOP4 min de lectura931 palabras

Fuentes: LangChain integrations with Ollama local LLM - qwen3.8:27b

Qwen local a través de Ollama, conectado a LangChain

Ejecuta modelos de chat de código abierto como qwen3.8:27b en tu propia máquina y conéctalos a las cadenas, agentes y herramientas de LangChain: sin claves API en la nube ni facturación por token.

Ollama en un párrafo

Ollama empaqueta los pesos, la configuración y el entorno de ejecución detrás de una interfaz amigable para Modelfile y se encarga de los detalles de aceleración por GPU en configuraciones comunes. Descarga una etiqueta, ejecuta un prompt y expone una API HTTP en el puerto 11434.

Integración de Ollama en LangChain

El paquete langchain-ollama ofrece modelos de chat con posibilidad de llamar a herramientas, salida estructurada, entradas multimodales, transmisión en tiempo real, operaciones asíncronas y registro de probabilidades: la misma interfaz que esperarías de los wrappers de chat en la nube, pero dirigida a localhost.

Eskema de configuración

Instale Ollama, descargue el modelo de chat que necesite y confirme que la API responde. En Python, instale la integración de Ollama de LangChain y cree un modelo de chat dirigido a su URL base local.

ollama pull qwen3.8:27b
ollama list

Cadenas y prompts

Construya una cadena sencilla de prompt → modelo para resúmenes o preguntas y respuestas sin salir de la máquina:

from langchain_ollama import ChatOllama

llm = ChatOllama(
    model="qwen3.8:27b",
    temperature=0.3,
)

Transmita tokens si su interfaz necesita actualizaciones incrementales:

messages = [
    ChatMessage(role="control", content="thinking"),
    HumanMessage("What is 3^3?"),
]

Herramientas y agentes

Vincule las herramientas de la misma manera que lo haría con un modelo alojado. El modelo local debe soportar la llamada a herramientas para lograr bucles de agentes fiables; elija etiquetas conocidas por funcionar con el protocolo de herramientas de Ollama.

messages = [
    SystemMessage(
        content="""
You are an expert at reading screenshots and technical documentation.

Rules:
- Extract information only from the image.
- Do not hallucinate missing values.
- Return concise answers.
- Preserve commands exactly as shown.
"""
    ),
    HumanMessage(
        content=[
            {
                "type": "image_url",
                "image_url": f"data:image/png;base64,{image_b64}",
            },
            {
                "type": "text",
                "text": "What is the download command for the Gemma 7B model?",
            },
        ],
    ),
]
SystemMessage
    ↓
"You are a technical documentation analyst.
 Extract information only from the image.
 Do not guess.
 Return concise answers."

HumanMessage #1
    ↓
"What is the download command?"

HumanMessage #2
    ↓
"What version of the model is shown?"

HumanMessage #3
    ↓
"What is the model's parameter count?"

Salida estructurada

Cuando necesite JSON, utilice ayudantes de salida estructurada en lugar de limitarse a prompts frágiles como “por favor, devuelva JSON”:

HumanMessage(
    content=[
        {
            "type": "image_url",
            "image_url": f"data:image/png;base64,{image_b64}",
        },
        {
            "type": "text",
            "text": """
The image is a screenshot from an Ollama model page.

Task:
1. Find the section containing model download instructions.
2. Locate the Gemma 7B model.
3. Return only the exact Ollama pull command.

Output format:
Return JSON only:

{
    "model_name": "",
    "download_command": "",
    "confidence": ""
}

Do not include explanations.
"""
        },
    ]
)

Por qué esta combinación

Mantiene los datos dentro del sistema, puede iterar sin límites de velocidad y sigue utilizando el vocabulario de cadenas/agentes de LangChain. Puede sacrificar la máxima calidad o velocidad a cambio de privacidad y previsibilidad en los costos: una buena opción para prototipos, herramientas internas y demostraciones sin conexión.

Preferir etiquetas explícitas de modelo en cada ejemplo para que las actualizaciones no modifiquen silenciosamente el comportamiento durante el tutorial.

Preferir etiquetas explícitas de modelo en cada ejemplo para que las actualizaciones no modifiquen silenciosamente el comportamiento durante el tutorial.

Preferir etiquetas explícitas de modelo en cada ejemplo para que las actualizaciones no modifiquen silenciosamente el comportamiento durante el tutorial.

Preferir etiquetas explícitas de modelo en cada ejemplo para que las actualizaciones no modifiquen silenciosamente el comportamiento durante el tutorial.

Preferir etiquetas explícitas de modelo en cada ejemplo para que las actualizaciones no modifiquen silenciosamente el comportamiento durante el tutorial.

Preferir etiquetas explícitas de modelo en cada ejemplo para que las actualizaciones no modifiquen silenciosamente el comportamiento durante el tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Preferir etiquetas de modelo explícitas en cada ejemplo para que las actualizaciones no cambien silenciosamente el comportamiento a mitad del tutorial.

Lecturas relacionadas