1010- ✅ ** 100% совместимость** с официальным OpenAI Python SDK
1111- ✅ ** Автоматическое управление токенами** Cloud.ru
1212- ✅ ** Drop-in replacement** - минимальные изменения в коде
13- - ✅ ** Async/await поддержка** с ` AsyncOpenAI `
13+ - ✅ ** Async/await поддержка** с ` EvolutionAsyncOpenAI `
1414- ✅ ** Streaming responses** поддержка
1515- ✅ ** Thread-safe** token management
1616- ✅ ** Автоматическое обновление** токенов за 30 секунд до истечения
1717- ✅ ** Retry логика** при ошибках авторизации
1818- ✅ ** Поддержка .env файлов** для управления конфигурацией
1919- ✅ ** Интеграционные тесты** с реальным API
20- - ✅ ** Evolution Foundation Models** поддержка с ` project_id `
21- - ✅ ** Готовые примеры** для Foundation Models
22- - ✅ ** Передовые AI модели** включая DeepSeek-R1, Qwen2.5 и другие
20+
2321
2422## 📦 Установка
2523
@@ -38,26 +36,17 @@ from openai import OpenAI
3836client = OpenAI(api_key = " sk-..." )
3937
4038# ✅ СТАЛО (Evolution OpenAI)
41- from evolution_openai import OpenAI
39+ from evolution_openai import EvolutionOpenAI
4240
4341# Для обычного использования
44- client = OpenAI (
42+ client = EvolutionOpenAI (
4543 key_id = " your_key_id" ,
4644 secret = " your_secret" ,
4745 base_url = " https://your-model-endpoint.cloud.ru/v1"
4846)
4947
50- # Для Evolution Foundation Models
51- client = OpenAI(
52- key_id = " your_key_id" ,
53- secret = " your_secret" ,
54- base_url = " https://foundation-models.api.cloud.ru/api/gigacube/openai/v1" ,
55- project_id = " your_project_id" # Для Evolution Foundation Models
56- )
57-
58- # Все остальное работает ТОЧНО ТАК ЖЕ!
5948response = client.chat.completions.create(
60- model = " default" , # или "deepseek-ai/DeepSeek-R1-Distill-Llama-70B" для Foundation Models
49+ model = " default" ,
6150 messages = [{" role" : " user" , " content" : " Hello!" }]
6251)
6352```
@@ -67,10 +56,10 @@ response = client.chat.completions.create(
6756#### Обычное использование
6857
6958``` python
70- from evolution_openai import OpenAI
59+ from evolution_openai import EvolutionOpenAI
7160
7261# Инициализация client для обычного использования
73- client = OpenAI (
62+ client = EvolutionOpenAI (
7463 key_id = " your_key_id" ,
7564 secret = " your_secret" ,
7665 base_url = " https://your-model-endpoint.cloud.ru/v1"
@@ -89,38 +78,7 @@ response = client.chat.completions.create(
8978print (response.choices[0 ].message.content)
9079```
9180
92- #### 🚀 Evolution Foundation Models
93-
94- Библиотека полностью поддерживает ** Evolution Foundation Models** - платформу для работы с передовыми AI моделями на Cloud.ru. Ключевые возможности:
95-
96- - ** Автоматическое управление Project ID** - добавляет заголовок ` x-project-id ` автоматически
97- - ** Передовые модели** - DeepSeek-R1, Qwen2.5, RefalMachine/RuadaptQwen2.5-7B-Lite-Beta
98- - ** Специальный endpoint** - ` https://foundation-models.api.cloud.ru/api/gigacube/openai/v1 `
99- - ** Полная совместимость** с OpenAI SDK - все методы работают идентично
100-
101- ``` python
102- from evolution_openai import OpenAI
103-
104- # Инициализация для Evolution Foundation Models
105- client = OpenAI(
106- key_id = " your_key_id" ,
107- secret = " your_secret" ,
108- base_url = " https://foundation-models.api.cloud.ru/api/gigacube/openai/v1" ,
109- project_id = " your_project_id" # Автоматически добавляется в заголовки
110- )
111-
112- # Использование Foundation Models
113- response = client.chat.completions.create(
114- model = " deepseek-ai/DeepSeek-R1-Distill-Llama-70B" ,
115- messages = [
116- {" role" : " system" , " content" : " You are a helpful assistant." },
117- {" role" : " user" , " content" : " What is artificial intelligence?" },
118- ],
119- max_tokens = 150
120- )
121-
122- print (response.choices[0 ].message.content)
123- ```
81+
12482
12583### Streaming
12684
@@ -132,12 +90,7 @@ stream = client.chat.completions.create(
13290 stream = True
13391)
13492
135- # Для Foundation Models
136- stream = client.chat.completions.create(
137- model = " deepseek-ai/DeepSeek-R1-Distill-Llama-70B" ,
138- messages = [{" role" : " user" , " content" : " Tell me a story" }],
139- stream = True
140- )
93+
14194
14295for chunk in stream:
14396 if chunk.choices[0 ].delta.content:
@@ -148,27 +101,17 @@ for chunk in stream:
148101
149102``` python
150103import asyncio
151- from evolution_openai import AsyncOpenAI
104+ from evolution_openai import EvolutionAsyncOpenAI
152105
153106
154107async def main ():
155- # Для обычного использования
156- client = AsyncOpenAI(
108+ client = EvolutionAsyncOpenAI(
157109 key_id = " your_key_id" ,
158110 secret = " your_secret" ,
159111 base_url = " https://your-model-endpoint.cloud.ru/v1" ,
160112 )
161-
162- # Для Foundation Models
163- client = AsyncOpenAI(
164- key_id = " your_key_id" ,
165- secret = " your_secret" ,
166- base_url = " https://foundation-models.api.cloud.ru/api/gigacube/openai/v1" ,
167- project_id = " your_project_id" , # Опционально для Foundation Models
168- )
169-
170113 response = await client.chat.completions.create(
171- model = " deepseek-ai/DeepSeek-R1-Distill-Llama-70B " , # или " default" для обычного использования
114+ model = " default" ,
172115 messages = [{" role" : " user" , " content" : " Async hello!" }]
173116 )
174117
@@ -201,32 +144,20 @@ ENABLE_INTEGRATION_TESTS=false
201144LOG_LEVEL=INFO
202145```
203146
204- #### Для Evolution Foundation Models:
205-
206- ``` bash
207- # .env файл для Foundation Models
208- EVOLUTION_KEY_ID=your_key_id_here
209- EVOLUTION_SECRET=your_secret_here
210- EVOLUTION_BASE_URL=https://foundation-models.api.cloud.ru/api/gigacube/openai/v1
211- EVOLUTION_PROJECT_ID=your_project_id_here # Обязательно для Foundation Models
212- EVOLUTION_TOKEN_URL=https://iam.api.cloud.ru/api/v1/auth/token
213- ENABLE_INTEGRATION_TESTS=false
214- LOG_LEVEL=INFO
215- ```
147+
216148
217149``` python
218150import os
219- from evolution_openai import OpenAI
151+ from evolution_openai import EvolutionOpenAI
220152from dotenv import load_dotenv
221153
222154# Загрузка переменных из .env файла
223155load_dotenv()
224156
225- client = OpenAI (
157+ client = EvolutionOpenAI (
226158 key_id = os.getenv(" EVOLUTION_KEY_ID" ),
227159 secret = os.getenv(" EVOLUTION_SECRET" ),
228160 base_url = os.getenv(" EVOLUTION_BASE_URL" ),
229- project_id = os.getenv(" EVOLUTION_PROJECT_ID" ), # Опционально для Foundation Models
230161)
231162```
232163
@@ -271,7 +202,7 @@ with client:
271202## 📚 Документация
272203
273204- [ API Documentation] ( https://cloud-ru-tech.github.io/evolution-openai-python )
274- - [ Evolution Foundation Models Guide ] ( https://cloud-ru-tech.github.io/evolution-openai-python/foundation_models )
205+
275206- [ Migration Guide] ( https://cloud-ru-tech.github.io/evolution-openai-python/migration )
276207- [ Examples] ( examples/ )
277208- [ Changelog] ( CHANGELOG.md )
0 commit comments