LangChain плюс Ollama: локальні ланцюги Qwen, інструменти та структура
Налаштуйте langchain-ollama на локальний тег Qwen, щоб отримувати ланцюги, стрімінг, виклики інструментів та структурований вихід без використання ключів хмари. Інструкції з налаштування та особливості, на які варто звернути увагу.
Джерела: LangChain integrations with Ollama local LLM - qwen3.8:27b
Локальний Qwen через Ollama, підключений до LangChain
Запустіть моделі чату з відкритими вагами, такі як qwen3.8:27b, на власному комп’ютері та підключіть їх до ланцюгів, агентів та інструментів LangChain — без ключів API хмари та без рахунків за кожен токен.
Ollama в одному абзаці
Ollama об’єднує ваги, конфігурацію та процес виконання за допомогою інтерфейсу, зручного для Modelfile, та керує деталями прискорення за рахунок GPU для поширених налаштувань. Скористайтеся тегом, введіть запит, і API буде доступний за портом 11434.
Інтеграція Ollama в LangChain
Пакет langchain-ollama надає доступ до моделей чату з можливістю виклику інструментів, структурованого виводу, багатомодальних вхідних даних, стрімінгу, асинхронної роботи та обліку ймовірностей — це той самий інтерфейс, який ви очікуєте від хмарних обгорток для чату, але працює на локальному комп’ютері.
Опис налаштування
Встановіть Ollama, завантажте потрібну модель чату та перевірьте, чи правильно відповідає API. У Python встановіть інтеграцію Ollama від LangChain та створіть модель чату, налаштовану на ваш локальний базовий 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 для ланцюгів/агентів. Ви можете пожертвувати максимальною якістю чи швидкістю заради приватності та передбачуваності витрат — це хороша пропозиція для прототипів, внутрішніх інструментів та офлайн-демонстрацій.
Бажано використовувати чіткі теги моделей у кожному прикладі, щоб оновлення не змінювали поведінку програми непомітно під час навчання.
Бажано використовувати чіткі теги моделей у кожному прикладі, щоб оновлення не змінювали поведінку програми непомітно під час навчання.
Бажано використовувати чіткі теги моделей у кожному прикладі, щоб оновлення не змінювали поведінку програми непомітно під час навчання.
Бажано використовувати чіткі теги моделей у кожному прикладі, щоб оновлення не змінювали поведінку програми непомітно під час навчання.
Бажано використовувати чіткі теги моделей у кожному прикладі, щоб оновлення не змінювали поведінку програми непомітно під час навчання.
Бажано використовувати чіткі теги моделей у кожному прикладі, щоб оновлення не змінювали поведінку програми непомітно під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.
Будь ласка, використовуйте чіткі теги моделей у кожному прикладі, щоб оновлення не таємно змінювали поведінку під час навчання.