LLM-провайдеры¶
Eval AI Library поддерживает множество LLM-провайдеров через единый интерфейс. Все метрики работают с любым провайдером -- достаточно указать нужную строку модели. Это позволяет легко переключаться между провайдерами или использовать разные модели для разных метрик.
Поддерживаемые провайдеры¶
| Провайдер | Префикс | Пример | Переменная окружения |
|---|---|---|---|
| OpenAI | openai: (по умолчанию) | gpt-4o | OPENAI_API_KEY |
| Azure OpenAI | azure: | azure:gpt-4o | AZURE_OPENAI_API_KEY |
| Google Gemini | google: | google:gemini-2.0-flash | GOOGLE_API_KEY |
| Anthropic Claude | anthropic: | anthropic:claude-3-5-sonnet-latest | ANTHROPIC_API_KEY |
| Ollama | ollama: | ollama:llama3 | -- |
| Кастомный | -- | Передайте экземпляр CustomLLMClient | -- |
Формат указания модели¶
Модель указывается строкой в формате провайдер:имя_модели. OpenAI является провайдером по умолчанию, поэтому для него префикс можно опустить:
# Short form (OpenAI is default)
model = "gpt-4o"
# Full form with provider prefix
model = "provider:model_name"
# Examples
model = "openai:gpt-4o"
model = "anthropic:claude-3-5-sonnet-latest"
model = "google:gemini-2.0-flash"
model = "ollama:llama3"
model = "azure:gpt-4o"
Использование LLMDescriptor¶
Для программного выбора провайдера можно использовать класс LLMDescriptor:
from eval_lib import LLMDescriptor, Provider
model = LLMDescriptor(provider=Provider.OPENAI, model="gpt-4o")
model = LLMDescriptor(provider=Provider.ANTHROPIC, model="claude-3-5-sonnet-latest")
model = LLMDescriptor(provider=Provider.GOOGLE, model="gemini-2.0-flash")
Комбинирование провайдеров в одной оценке¶
Вы можете использовать разных провайдеров для разных метрик в рамках одного запуска оценки. Это позволяет, например, использовать более дешёвую модель для простых метрик и более мощную -- для сложных:
from eval_lib import (
AnswerRelevancyMetric,
FaithfulnessMetric,
CustomEvalMetric,
)
metrics = [
# OpenAI for answer relevancy
AnswerRelevancyMetric(model="gpt-4o", threshold=0.7),
# Claude for faithfulness
FaithfulnessMetric(model="anthropic:claude-3-5-sonnet-latest", threshold=0.7),
# Gemini for custom evaluation
CustomEvalMetric(
model="google:gemini-2.0-flash",
threshold=0.7,
name="Quality",
criteria="Evaluate response quality"
),
]
Прямые вызовы LLM¶
Помимо использования в метриках, вы можете делать прямые вызовы к LLM через клиент библиотеки:
from eval_lib import chat_complete, get_embeddings
# Chat completion
response, cost = await chat_complete(
llm="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
temperature=0.7
)
# Embeddings
embeddings, cost = await get_embeddings(
model="openai:text-embedding-3-small",
texts=["Hello world", "How are you?"]
)
Отслеживание стоимости¶
Все вызовы API возвращают стоимость в долларах США, когда она доступна. Движок оценки агрегирует стоимость по всем метрикам и тестовым кейсам:
Подробнее о ценах моделей см. Стоимость моделей.