Skip to main content

Evolution LangChain

License: MIT PyPI version Coverage

Полностью совместимая интеграция Evolution Inference API с LangChain, включающая автоматическое управление токенами доступа. Просто замените стандартные LLM на EvolutionInference и все будет работать!

🎯 Особенности

  • ✅ 100% совместимость с LangChain LLM интерфейсом
  • ✅ Автоматическое управление токенами Cloud.ru
  • ✅ Drop-in replacement - минимальные изменения в коде
  • ✅ Async/await поддержка с асинхронными методами
  • ✅ Streaming responses поддержка
  • ✅ Thread-safe token management
  • ✅ Автоматическое обновление токенов за 30 секунд до истечения
  • ✅ Retry логика при ошибках авторизации
  • ✅ Поддержка .env файлов для управления конфигурацией
  • ✅ Интеграционные тесты с реальным API

📦 Установка

Требования

  • Python 3.9+
  • Pydantic 2.7.4+ (автоматически устанавливается)
  • LangChain 0.3.25+ (автоматически устанавливается)
  • Poetry (рекомендуется)

Установка через pip

pip install evolution-langchain

Установка через Poetry (рекомендуется)

# Клонируйте репозиторий
git clone https://github.com/cloud-ru-tech/evolution-langchain.git
cd evolution-langchain

# Установите зависимости
poetry install

# Активируйте виртуальное окружение
poetry shell

Установка из исходного кода

# Клонируйте репозиторий
git clone https://github.com/cloud-ru-tech/evolution-langchain.git
cd evolution-langchain

# Установите в режиме разработки
pip install -e .

# Или установите обычным способом
pip install .

⚡ Быстрый старт

Миграция с стандартных LLM

# ❌ БЫЛО (стандартный LangChain LLM)
from langchain.llms import OpenAI

llm = OpenAI(api_key="sk-...")

# ✅ СТАЛО (Evolution LangChain)
from evolution_langchain import EvolutionInference

llm = EvolutionInference(
    model="your-model-name",
    key_id="your_key_id", 
    secret="your_secret", 
    base_url="https://your-model-endpoint.cloud.ru/v1"
)

# Все остальное работает ТОЧНО ТАК ЖЕ!
response = llm.invoke("Hello!")

Основное использование

from evolution_langchain import EvolutionInference

# Инициализация модели
llm = EvolutionInference(
    model="your-model-name",
    key_id="your-key-id",
    secret="your-secret",
    base_url="https://your-api-endpoint.com/v1",  # Обязательный параметр
    max_tokens=1000,
    temperature=0.7,
)

# Простой запрос
response = llm.invoke("Привет! Расскажи о себе.")
print(response)

# Пакетная обработка
prompts = [
    "Что такое машинное обучение?",
    "Объясни принцип работы нейронных сетей"
]
responses = llm.generate(prompts)

Интеграция с LangChain

from evolution_langchain import EvolutionInference
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

# Создание шаблона промпта
template = "Ответь на вопрос: {question}"
prompt = PromptTemplate(template=template, input_variables=["question"])

# Создание цепочки с Evolution Inference
llm = EvolutionInference(
    model="your-model", 
    key_id="your-key-id", 
    secret="your-secret",
    base_url="https://your-api-endpoint.com/v1"
)
chain = LLMChain(llm=llm, prompt=prompt)

# Выполнение
result = chain.run("Что такое квантовые компьютеры?")
print(result)

🔧 Конфигурация

Переменные окружения

Создайте файл .env в корне вашего проекта:

# Скопируйте из env.example и заполните
cp env.example .env
# .env файл
EVOLUTION_KEY_ID=your_key_id_here
EVOLUTION_SECRET=your_secret_here
EVOLUTION_BASE_URL=https://your-model-endpoint.cloud.ru/v1
EVOLUTION_MODEL=your-model-name
ENABLE_INTEGRATION_TESTS=false
LOG_LEVEL=INFO
import os
from evolution_langchain import EvolutionInference
from dotenv import load_dotenv

# Загрузка переменных из .env файла
load_dotenv()

llm = EvolutionInference(
    model=os.getenv("EVOLUTION_MODEL"),
    key_id=os.getenv("EVOLUTION_KEY_ID"),
    secret=os.getenv("EVOLUTION_SECRET"),
    base_url=os.getenv("EVOLUTION_BASE_URL")
)

Параметры конфигурации

Параметр Тип Описание По умолчанию
model str Название модели ""
key_id str ID ключа для аутентификации обязательный
secret str Секрет для аутентификации обязательный
base_url str URL API Evolution Inference обязательный
auth_url str URL сервера аутентификации предустановлен
max_tokens int Максимальное количество токенов 512
temperature float Контроль случайности (0.0-2.0) 1.0
top_p float Nucleus sampling (0.0-1.0) 1.0
frequency_penalty float Штраф за частоту (-2.0-2.0) 0.0
presence_penalty float Штраф за присутствие (-2.0-2.0) 0.0
stop List[str] Стоп-последовательности None
request_timeout int Таймаут запроса в секундах 60

🔍 Управление токенами

Класс автоматически управляет жизненным циклом токенов:

  • ✅ Автоматическое получение токена при первом запросе
  • ✅ Кэширование токена в памяти
  • ✅ Автоматическое обновление за 30 секунд до истечения
  • ✅ Thread-safe операции с токенами
  • ✅ Обработка ошибок аутентификации

📋 Полная совместимость

Поддерживаются ВСЕ методы LangChain LLM интерфейса:

# Основные методы
llm.invoke("Hello world")
llm.generate(["prompt1", "prompt2"])

# Асинхронные методы
await llm.ainvoke("Hello world")
await llm.agenerate(["prompt1", "prompt2"])

# Стриминг
for chunk in llm.stream("Tell me a story"):
    print(chunk, end="")

# Интеграция с цепочками
from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run("Your question here")

🧪 Примеры

Запуск всех примеров

# Запуск всех примеров с детальной отчетностью
make run-all-examples

Запуск отдельных примеров

# Базовые примеры использования
make run-examples

# Демонстрация возможностей
make run-demo

# Примеры стриминга
make run-streaming

Доступные примеры

  • demo.py - Демонстрация основных возможностей и интеграции с LangChain
  • example_usage.py - Базовое использование API с простыми и пакетными запросами
  • streaming_examples.py - Примеры использования стриминга для длинных ответов

Настройка окружения для примеров

  1. Создайте файл .env:
cp env.example .env
  1. Заполните переменные окружения:
EVOLUTION_KEY_ID=your_key_id_here
EVOLUTION_SECRET=your_secret_here
EVOLUTION_BASE_URL=https://your-endpoint.cloud.ru/v1
  1. Запустите примеры:
make run-all-examples

Обработка ошибок

from evolution_langchain import EvolutionInference

try:
    llm = EvolutionInference(
        model="your-model",
        key_id="invalid-key",
        secret="invalid-secret",
        base_url="https://your-api-endpoint.com/v1"
    )
    response = llm.invoke("Test")
except ValueError as e:
    print(f"Ошибка конфигурации: {e}")
except RuntimeError as e:
    print(f"Ошибка API: {e}")

🆘 Support

Metadata

Release files for evolution-langchain 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evolution-langchain 1.0.0
File Size Uploaded
evolution_langchain-1.0.0.tar.gz 28.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evolution-langchain 1.0.0
File Interpreter ABI Platform
evolution_langchain-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 37.0 kB

Release files / evolution_langchain-1.0.0.tar.gz

Download URL evolution_langchain-1.0.0.tar.gz
Size 28.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e553fdff3dc8a1fe026199847a4e3eb4bed8f9b420266c9a19e66bcd1ad1495d
BLAKE2b-256 checksum
How to use checksums
082c0c56649b675b1381641af7d4241507742ba6f0ac5eb7c01be0992862f7fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.9

Release files / evolution_langchain-1.0.0-py3-none-any.whl

Download URL evolution_langchain-1.0.0-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f4631634e9d3e7d7a703861374e7bb3cb54635bfe80300d7f16f0b35f044eebd
BLAKE2b-256 checksum
How to use checksums
a1faba70068358a12f0d20d7a56c37289e0e5f77669c0fa88d01ff63950d3ce1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.9

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page