Перейти к содержанию

Python#

Работаем через официальный openai SDK.

Установка#

bash pip install openai

Базовый клиент#

```python import os from openai import OpenAI

client = OpenAI( base_url="https://api.ml-router.su/v1", api_key=os.environ["ORB_API_KEY"], ) ```

Храни ключ в env

bash export ORB_API_KEY="orb_live_..."

Chat completion#

python resp = client.chat.completions.create( model="openai/gpt-4o-mini", messages=[ {"role": "system", "content": "Ты лаконичный ассистент."}, {"role": "user", "content": "Что такое FastAPI?"}, ], temperature=0.3, max_tokens=200, ) print(resp.choices[0].message.content) print(f"\nstats: {resp.usage}")

Streaming#

python stream = client.chat.completions.create( model="openai/gpt-4o-mini", messages=[{"role": "user", "content": "Расскажи короткую историю"}], stream=True, ) for chunk in stream: delta = chunk.choices[0].delta.content if chunk.choices else None if delta: print(delta, end="", flush=True)

Tool calling#

```python import json

tools = [{ "type": "function", "function": { "name": "search_web", "description": "Поиск в вебе по запросу", "parameters": { "type": "object", "properties": {"query": {"type": "string"}}, "required": ["query"], }, }, }]

resp = client.chat.completions.create( model="openai/gpt-4o", messages=[{"role": "user", "content": "Что нового про Mars rover?"}], tools=tools, )

msg = resp.choices[0].message if msg.tool_calls: for call in msg.tool_calls: args = json.loads(call.function.arguments) print(f"Модель просит вызвать {call.function.name}({args})") ```

JSON mode#

python resp = client.chat.completions.create( model="openai/gpt-4o-mini", messages=[ {"role": "system", "content": "Отвечай ТОЛЬКО валидным JSON."}, {"role": "user", "content": "Перечисли 3 столицы Европы с населением"}, ], response_format={"type": "json_object"}, ) import json data = json.loads(resp.choices[0].message.content)

Async-клиент#

```python import asyncio from openai import AsyncOpenAI

client = AsyncOpenAI(base_url=..., api_key=...)

async def main(): resp = await client.chat.completions.create( model="openai/gpt-4o-mini", messages=[{"role": "user", "content": "Hi"}], ) print(resp.choices[0].message.content)

asyncio.run(main()) ```

Тестирование без расходов#

```python test_client = OpenAI( base_url="https://api.ml-router.su/v1", api_key="orb_test_…", # /new_test_token в боте )

любые модели — но получаешь заглушку, $0#

```

См. Sandbox-ключи.