Evolution Foundation Models
Evolution Foundation Models - это специальная платформа для работы с передовыми моделями искусственного интеллекта на основе Cloud.ru. Библиотека evolution-openai предоставляет полную поддержку для работы с Evolution Foundation Models через знакомый OpenAI-совместимый API.
Особенности Foundation Models
✅ Передовые модели AI - Доступ к последним моделям ИИ включая DeepSeek-R1, Qwen2.5 и другие
✅ Автоматическое управление Project ID - Библиотека автоматически добавляет заголовок x-project-id
✅ Полная совместимость с OpenAI SDK - Все методы работают идентично
✅ Поддержка streaming - Потоковая обработка ответов
✅ Async/await поддержка - Асинхронные операции
✅ Автоматическое управление токенами - Встроенная авторизация Cloud.ru
Быстрый старт
Базовая настройка
from evolution_openai import OpenAI
client = OpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id" # Обязательно для Foundation Models
)
response = client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[
{"role": "system", "content": "Ты полезный помощник."},
{"role": "user", "content": "Расскажи о возможностях ИИ"}
],
max_tokens=100
)
print(response.choices[0].message.content)
Переменные окружения
Рекомендуется использовать файл .env
для хранения конфигурации:
# .env файл для Foundation Models
EVOLUTION_KEY_ID=your_key_id_here
EVOLUTION_SECRET=your_secret_here
EVOLUTION_BASE_URL=https://foundation-models.api.cloud.ru/api/gigacube/openai/v1
EVOLUTION_PROJECT_ID=your_project_id_here
EVOLUTION_FOUNDATION_MODELS_URL=https://foundation-models.api.cloud.ru/api/gigacube/openai/v1
Загрузка из переменных окружения:
import os
from evolution_openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(
key_id=os.getenv("EVOLUTION_KEY_ID"),
secret=os.getenv("EVOLUTION_SECRET"),
base_url=os.getenv("EVOLUTION_FOUNDATION_MODELS_URL"),
project_id=os.getenv("EVOLUTION_PROJECT_ID"),
)
Доступные модели
Evolution Foundation Models предоставляет доступ к различным моделям:
- RefalMachine/RuadaptQwen2.5-7B-Lite-Beta (рекомендуется)
Адаптированная для русского языка модель на основе Qwen2.5-7B
- deepseek-ai/DeepSeek-R1-Distill-Llama-70B
Модель на основе DeepSeek-R1 с дистилляцией
- Другие модели
Список доступных моделей может обновляться - обратитесь к документации Cloud.ru
Параметры конфигурации
Project ID
project_id
- обязательный параметр для Foundation Models:
client = OpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id" # Автоматически добавляется в заголовки
)
Timeout и повторы
Foundation Models могут требовать больше времени для обработки:
client = OpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id",
timeout=60.0, # Увеличенный timeout
max_retries=3, # Количество повторов
)
Примеры использования
Базовый пример
from evolution_openai import OpenAI
client = OpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id"
)
response = client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[
{"role": "system", "content": "Ты полезный помощник."},
{"role": "user", "content": "Объясни машинное обучение простыми словами"}
],
max_tokens=200,
temperature=0.7
)
print(f"Ответ: {response.choices[0].message.content}")
print(f"Модель: {response.model}")
print(f"Токенов использовано: {response.usage.total_tokens}")
Streaming ответы
stream = client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[
{"role": "user", "content": "Напиши короткое стихотворение про технологии"}
],
stream=True,
max_tokens=100,
temperature=0.8
)
print("Генерация стихотворения:")
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Асинхронное использование
import asyncio
from evolution_openai import AsyncOpenAI
async def main():
async with AsyncOpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id"
) as client:
response = await client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[
{"role": "user", "content": "Что такое квантовые вычисления?"}
],
max_tokens=150
)
print(response.choices[0].message.content)
asyncio.run(main())
Параллельные запросы
import asyncio
from evolution_openai import AsyncOpenAI
async def parallel_requests():
async with AsyncOpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id"
) as client:
questions = [
"Что такое ИИ?",
"Как работает машинное обучение?",
"Что такое нейронные сети?"
]
# Создаем задачи для параллельного выполнения
tasks = []
for question in questions:
task = client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[
{"role": "system", "content": "Дай краткий ответ."},
{"role": "user", "content": question}
],
max_tokens=50
)
tasks.append(task)
# Выполняем все запросы параллельно
responses = await asyncio.gather(*tasks)
for question, response in zip(questions, responses):
print(f"Вопрос: {question}")
print(f"Ответ: {response.choices[0].message.content}")
print("-" * 50)
asyncio.run(parallel_requests())
Использование with_options
# Настройка дополнительных опций
client_with_options = client.with_options(
timeout=120.0, # Увеличенный timeout
max_retries=5, # Больше попыток
)
response = client_with_options.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[
{"role": "user", "content": "Создай подробный план изучения Python"}
],
max_tokens=300,
temperature=0.3
)
print(response.choices[0].message.content)
Управление токенами
Информация о токене
# Получение информации о токене
token_info = client.get_token_info()
print(f"Токен активен: {token_info['has_token']}")
print(f"Токен валиден: {token_info['is_valid']}")
# Текущий токен
current_token = client.current_token
print(f"Текущий токен: {current_token[:20]}...")
Принудительное обновление токена
# Принудительное обновление токена
new_token = client.refresh_token()
print(f"Новый токен получен: {new_token[:20]}...")
Обработка ошибок
Типичные ошибки и их обработка
from evolution_openai import OpenAI
from evolution_openai.exceptions import EvolutionAuthError
try:
client = OpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id"
)
response = client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[
{"role": "user", "content": "Привет!"}
],
max_tokens=50
)
except EvolutionAuthError as e:
print(f"Ошибка авторизации: {e}")
# Проверьте key_id, secret и project_id
except Exception as e:
print(f"Общая ошибка: {e}")
Неправильная модель
try:
response = client.chat.completions.create(
model="non-existent-model",
messages=[{"role": "user", "content": "Test"}],
max_tokens=10
)
except Exception as e:
print(f"Модель не найдена: {e}")
Неправильные параметры
try:
response = client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[], # Пустой список сообщений
max_tokens=10
)
except Exception as e:
print(f"Неправильные параметры: {e}")
Лучшие практики
Настройка timeout
Foundation Models могут работать медленнее обычных API:
client = OpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id",
timeout=90.0 # Увеличенный timeout для Foundation Models
)
Управление токенами
# Ограничение количества токенов в ответе
response = client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[{"role": "user", "content": "Объясни квантовую физику"}],
max_tokens=200, # Ограничение для контроля затрат
temperature=0.5 # Сбалансированная креативность
)
Кеширование соединений
# Используйте context manager для автоматического управления ресурсами
with OpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id"
) as client:
# Множественные запросы с одним клиентом
for i in range(5):
response = client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[{"role": "user", "content": f"Вопрос {i+1}"}],
max_tokens=50
)
print(response.choices[0].message.content)
Мониторинг использования
import time
start_time = time.time()
response = client.chat.completions.create(
model="RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
messages=[{"role": "user", "content": "Создай план проекта"}],
max_tokens=300
)
elapsed_time = time.time() - start_time
print(f"Время ответа: {elapsed_time:.2f} секунд")
print(f"Токенов использовано: {response.usage.total_tokens}")
print(f"Скорость: {response.usage.total_tokens / elapsed_time:.1f} токен/сек")
Устранение неполадок
Проблемы с авторизацией
Проблема: Ошибка авторизации при подключении
Решение: Проверьте правильность key_id, secret и project_id:
# Проверьте переменные окружения
import os
print(f"KEY_ID: {os.getenv('EVOLUTION_KEY_ID', 'не установлен')}")
print(f"SECRET: {os.getenv('EVOLUTION_SECRET', 'не установлен')[:10]}...")
print(f"PROJECT_ID: {os.getenv('EVOLUTION_PROJECT_ID', 'не установлен')}")
Проблемы с моделью
Проблема: Модель не найдена или недоступна
Решение: Используйте проверенные модели:
# Рекомендуемые модели для Foundation Models
models = [
"RefalMachine/RuadaptQwen2.5-7B-Lite-Beta",
"deepseek-ai/DeepSeek-R1-Distill-Llama-70B"
]
Проблемы с сетью
Проблема: Тайм-ауты или проблемы с подключением
Решение: Увеличьте timeout и количество повторов:
client = OpenAI(
key_id="your_key_id",
secret="your_secret",
base_url="https://foundation-models.api.cloud.ru/api/gigacube/openai/v1",
project_id="your_project_id",
timeout=120.0, # 2 минуты
max_retries=5, # 5 попыток
)