1717- ✅ ** Retry логика** при ошибках авторизации
1818- ✅ ** Поддержка .env файлов** для управления конфигурацией
1919- ✅ ** Интеграционные тесты** с реальным API
20+ - ✅ ** Evolution Foundation Models** поддержка с ` project_id `
21+ - ✅ ** Готовые примеры** для Foundation Models
22+ - ✅ ** Передовые AI модели** включая DeepSeek-R1, Qwen2.5 и другие
2023
2124## 📦 Установка
2225
@@ -37,24 +40,40 @@ client = OpenAI(api_key="sk-...")
3740# ✅ СТАЛО (Evolution OpenAI)
3841from evolution_openai import OpenAI
3942
43+ # Для обычного использования
4044client = OpenAI(
41- key_id = " your_key_id" , secret = " your_secret" , base_url = " https://your-model-endpoint.cloud.ru/v1"
45+ key_id = " your_key_id" ,
46+ secret = " your_secret" ,
47+ base_url = " https://your-model-endpoint.cloud.ru/v1"
48+ )
49+
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
4256)
4357
4458# Все остальное работает ТОЧНО ТАК ЖЕ!
4559response = client.chat.completions.create(
46- model = " default" , messages = [{" role" : " user" , " content" : " Hello!" }]
60+ model = " default" , # или "deepseek-ai/DeepSeek-R1-Distill-Llama-70B" для Foundation Models
61+ messages = [{" role" : " user" , " content" : " Hello!" }]
4762)
4863```
4964
5065### Основное использование
5166
67+ #### Обычное использование
68+
5269``` python
5370from evolution_openai import OpenAI
5471
55- # Инициализация client
72+ # Инициализация client для обычного использования
5673client = OpenAI(
57- key_id = " your_key_id" , secret = " your_secret" , base_url = " https://your-model-endpoint.cloud.ru/v1"
74+ key_id = " your_key_id" ,
75+ secret = " your_secret" ,
76+ base_url = " https://your-model-endpoint.cloud.ru/v1"
5877)
5978
6079# Chat Completions
@@ -70,12 +89,54 @@ response = client.chat.completions.create(
7089print (response.choices[0 ].message.content)
7190```
7291
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+ ```
124+
73125### Streaming
74126
75127``` python
76- # Streaming responses
128+ # Для обычного использования
129+ stream = client.chat.completions.create(
130+ model = " default" ,
131+ messages = [{" role" : " user" , " content" : " Tell me a story" }],
132+ stream = True
133+ )
134+
135+ # Для Foundation Models
77136stream = client.chat.completions.create(
78- model = " default" , messages = [{" role" : " user" , " content" : " Tell me a story" }], stream = True
137+ model = " deepseek-ai/DeepSeek-R1-Distill-Llama-70B" ,
138+ messages = [{" role" : " user" , " content" : " Tell me a story" }],
139+ stream = True
79140)
80141
81142for chunk in stream:
@@ -91,14 +152,24 @@ from evolution_openai import AsyncOpenAI
91152
92153
93154async def main ():
155+ # Для обычного использования
94156 client = AsyncOpenAI(
95157 key_id = " your_key_id" ,
96158 secret = " your_secret" ,
97159 base_url = " https://your-model-endpoint.cloud.ru/v1" ,
98160 )
99161
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+
100170 response = await client.chat.completions.create(
101- model = " default" , messages = [{" role" : " user" , " content" : " Async hello!" }]
171+ model = " deepseek-ai/DeepSeek-R1-Distill-Llama-70B" , # или "default" для обычного использования
172+ messages = [{" role" : " user" , " content" : " Async hello!" }]
102173 )
103174
104175 print (response.choices[0 ].message.content)
@@ -118,6 +189,8 @@ asyncio.run(main())
118189cp env.example .env
119190```
120191
192+ #### Для обычного использования:
193+
121194``` bash
122195# .env файл
123196EVOLUTION_KEY_ID=your_key_id_here
@@ -128,6 +201,19 @@ ENABLE_INTEGRATION_TESTS=false
128201LOG_LEVEL=INFO
129202```
130203
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+ ```
216+
131217``` python
132218import os
133219from evolution_openai import OpenAI
@@ -140,6 +226,7 @@ client = OpenAI(
140226 key_id = os.getenv(" EVOLUTION_KEY_ID" ),
141227 secret = os.getenv(" EVOLUTION_SECRET" ),
142228 base_url = os.getenv(" EVOLUTION_BASE_URL" ),
229+ project_id = os.getenv(" EVOLUTION_PROJECT_ID" ), # Опционально для Foundation Models
143230)
144231```
145232
@@ -180,29 +267,11 @@ with client:
180267 response = client.chat.completions.create(... )
181268```
182269
183- ## 🔍 Управление токенами
184-
185- ``` python
186- # Получить информацию о токене
187- token_info = client.get_token_info()
188- print (token_info)
189- # {
190- # "has_token": true,
191- # "expires_at": "2024-01-01T12:00:00",
192- # "is_valid": true,
193- # "buffer_seconds": 30
194- # }
195-
196- # Принудительно обновить токен
197- new_token = client.refresh_token()
198-
199- # Получить текущий токен
200- current_token = client.current_token
201- ```
202270
203271## 📚 Документация
204272
205273- [ 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 )
206275- [ Migration Guide] ( https://cloud-ru-tech.github.io/evolution-openai-python/migration )
207276- [ Examples] ( examples/ )
208277- [ Changelog] ( CHANGELOG.md )
0 commit comments