One API: Унифицированный Gateway для LLM-провайдеров

#llm#api-gateway#devops#docker#openai

TL;DR

One API — это open-source решение для консолидации доступа к различным LLM API (OpenAI, Claude, Gemini и другим) через единый endpoint. Система предоставляет key management, rate limiting и унифицированный API contract, развертывается как single binary или Docker-контейнер.

Введение: Проблема мультипровайдерности в LLM-разработке

Современные senior фронтенд-девелоперы сталкиваются с необходимостью интеграции нескольких LLM-провайдеров в своих приложениях. Каждый provider имеет:

One API решает эти проблемы, предлагая абстракцию в виде API gateway с единой точкой входа. Это особенно актуально для:

  1. A/B тестирования разных моделей
  2. Fallback стратегий при rate limiting
  3. Централизованного мониторинга и биллинга

Основная архитектура

Система построена по принципу lightweight proxy с плагинной архитектурой для поддержки новых провайдеров:

// Пример конфигурации провайдеров в TypeScript-интерфейсе
interface ProviderConfig {
  name: 'openai' | 'anthropic' | 'google';
  apiKey: string;
  endpoint?: string;
  rateLimit?: {
    rpm: number;
    tpm: number;
  };
}

Key features:

Практическое развертывание

Для Docker-деплоя достаточно:

docker run -d \
  -p 3000:3000 \
  -e SQLITE_PATH=/data/oneapi.db \
  -v ./data:/data \
  justsong/one-api

Конфигурация через environment variables:

Интеграция с фронтендом

Пример использования с React + TypeScript:

import { create } from 'one-api-client';

const client = create({
  baseURL: 'https://your-one-api-instance.com',
  apiKey: 'your-jwt-token',
});

const ChatComponent = () => {
  const [response, setResponse] = useState('');

  const handleSubmit = async (prompt: string) => {
    const res = await client.createChatCompletion({
      model: 'gpt-4', // Может быть claude-2 или gemini-pro
      messages: [{ role: 'user', content: prompt }],
    });
    setResponse(res.choices[0].message.content);
  };

  return <>{/* UI implementation */}</>;
};

Advanced Features

  1. Каналы (Channels):

    channels:
      - name: "primary-gpt4"
        provider: "openai"
        models: ["gpt-4"]
        priority: 10
      - name: "fallback-claude"
        provider: "anthropic"
        models: ["claude-2"]
        priority: 5
    
  2. Балансировка нагрузки:

    • Weighted round-robin
    • Least connections
    • Latency-based
  3. Аналитика:

    SELECT provider, model, 
           COUNT(*) as requests,
           AVG(response_time) as avg_latency
    FROM request_logs
    GROUP BY provider, model;
    

Заключение

One API предлагает production-ready решение для:

Для senior разработчиков система особенно ценна возможностью реализации сложных routing policies без изменения client-side кода. Проект активно развивается, с еженедельными обновлениями и поддержкой новых провайдеров.

Рекомендуемая next steps:

  1. Настроить мониторинг через Prometheus exporter
  2. Реализовать canary-деплой новых моделей
  3. Интегрировать с существующим SSO (Keycloak/Auth0)

Попробуй сам: DigitalOcean — $200 кредитов для новых пользователей.


Источник: https://github.com/songquanpeng/one-api