Главная / Статьи

LangChain плюс Ollama: локальные цепочки Qwen, инструменты и структура

Направьте langchain-ollama на локальный тег Qwen, чтобы получать цепочки обработки, потоковую передачу данных, вызовы инструментов и структурированный вывод без использования облачных ключей. Инструкции по настройке и возможные особенности работы.

Издатель: REACTAPP.TOP4 мин чтения931 слов

Источники: LangChain integrations with Ollama local LLM - qwen3.8:27b

Локальный Qwen через Ollama, интегрированный в LangChain

Запускайте модели чатов с открытыми весами, такие как qwen3.8:27b, на собственном компьютере и подключайте их к цепочкам, агентам и инструментам LangChain — без ключей API облака и без счетов за каждый токен.

Ollama в одном абзаце

Ollama объединяет веса, конфигурацию и среды выполнения в удобный интерфейс, ориентированный на Modelfile, и самостоятельно обрабатывает детали ускорения с помощью GPU для распространенных настроек. Достаточно выбрать тег, ввести запрос и запустить HTTP-API на порту 11434.

Интеграция Ollama в LangChain

Пакет langchain-ollama предоставляет доступ к моделям чатов с возможностью вызова инструментов, структурированного вывода, мультимодальных входов, потоковой обработки, асинхронной работы и логирования вероятностей — всё то же, что привычно при использовании облачных сервисов чатов, но уже на локальном хосте.

Краткий план настройки

Установите Ollama, загрузите необходимую модель чата и проверьте работу API. В Python установите интеграцию LangChain с Ollama и создайте модель чата, настроенную на ваш локальный базовый URL.

ollama pull qwen3.8:27b
ollama list

Цепочки и промпты

Создайте простую цепочку «промпт → модель» для краткого изложения или вопросов и ответов без необходимости покидать устройство:

from langchain_ollama import ChatOllama

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

Транслируйте токены, если ваш интерфейс требует постепенных обновлений:

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

Инструменты и агенты

Подключайте инструменты так же, как это делается с хостинговой моделью. Локальная модель должна поддерживать вызовы инструментов для надежной работы агентов — выбирайте теги, известные как совместимые с протоколом инструментов 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?"

Структурированный вывод

Если вам нужен JSON, используйте инструменты для структурированного вывода вместо простых запросов вроде «пожалуйста, верните 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.
"""
        },
    ]
)

Почему именно этот набор инструментов

Вы храните данные непосредственно на устройстве, можете многократно выполнять операции без ограничений по частоте, при этом продолжаете использовать словарный запас LangChain для цепочек/агентов. Вы можете пожертвовать максимальным качеством или скоростью ради конфиденциальности и предсказуемости затрат — что является хорошим вариантом для прототипов, внутренних инструментов и демонстраций в офлайн-режиме.

Рекомендуется использовать явные теги моделей в каждом примере, чтобы обновления не меняли поведение без вашего ведома в процессе обучения.

Рекомендуется использовать явные теги моделей в каждом примере, чтобы обновления не меняли поведение без вашего ведома в процессе обучения.

Рекомендуется использовать явные теги моделей в каждом примере, чтобы обновления не меняли поведение без вашего ведома в процессе обучения.

Рекомендуется использовать явные теги моделей в каждом примере, чтобы обновления не меняли поведение без вашего ведома в процессе обучения.

Рекомендуется использовать явные теги моделей в каждом примере, чтобы обновления не меняли поведение без вашего ведома в процессе обучения.

Рекомендуется использовать явные теги моделей в каждом примере, чтобы обновления не меняли поведение без вашего ведома в процессе обучения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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