AI Telegram-бот на VDS с LangChain и Ollama

AI-агенты на VDS · 19.04.2026
AI Telegram-бот на VDS с LangChain и Ollama

Обзор

Создадим Telegram-бота с AI-возможностями: он будет помнить контекст разговора, использовать локальную LLM через Ollama и отвечать на вопросы по вашим документам.

Установка зависимостей

pip install python-telegram-bot langchain langchain-ollama
pip install python-dotenv

Структура проекта

tg-ai-bot/
├── bot.py
├── .env
└── requirements.txt

Код бота

import os
from telegram import Update
from telegram.ext import Application, MessageHandler, filters, ContextTypes
from langchain_ollama import OllamaLLM
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.messages import HumanMessage, AIMessage

llm = OllamaLLM(model="llama3.2")
history = {}

async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
    chat_id = update.effective_chat.id
    user_text = update.message.text
    if chat_id not in history:
        history[chat_id] = []
    history[chat_id].append(HumanMessage(content=user_text))
    if len(history[chat_id]) > 20:
        history[chat_id] = history[chat_id][-20:]
    messages = [("system", "Ты полезный ассистент.")]
    for msg in history[chat_id]:
        role = "user" if isinstance(msg, HumanMessage) else "assistant"
        messages.append((role, msg.content))
    prompt = ChatPromptTemplate.from_messages(messages)
    chain = prompt | llm
    response = chain.invoke({})
    history[chat_id].append(AIMessage(content=response))
    await update.message.reply_text(response)

app = Application.builder().token(os.getenv("BOT_TOKEN")).build()
app.add_handler(MessageHandler(filters.TEXT, handle_message))
app.run_polling()

Файл .env

BOT_TOKEN=your_telegram_bot_token_here

Запуск как системная служба

[Unit]
Description=AI Telegram Bot
After=network.target

[Service]
WorkingDirectory=/home/user/tg-ai-bot
EnvironmentFile=/home/user/tg-ai-bot/.env
ExecStart=/home/user/tg-ai-bot/venv/bin/python bot.py
Restart=always

[Install]
WantedBy=multi-user.target
Получите BOT_TOKEN у @BotFather в Telegram. Создайте нового бота командой /newbot и скопируйте токен.
← Назад в базу знаний Задать вопрос поддержке