Интеграция и примеры
🚀 Примеры Python OpenAI Client - Полное руководство по интеграции с потоковой передачей и уточнениями
Простые примеры Python для использования клиента OpenAI с системой SGR Agent Core.
Требования
Пример 1: Базовый исследовательский запрос
Простой исследовательский запрос без уточнений.
from openai import OpenAI
# Инициализация клиента
client = OpenAI(
base_url="http://localhost:8010/v1",
api_key="dummy", # Не требуется для локального сервера
)
# Выполнить исследовательский запрос
response = client.chat.completions.create(
model="sgr-agent",
messages=[{"role": "user", "content": "Research BMW X6 2025 prices in Russia"}],
stream=True,
temperature=0.4,
)
# Вывести потоковый ответ
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Пример 2: Исследование с поддержкой уточнений
Обработка запросов агента на уточнение и продолжение разговора.
import json
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8010/v1", api_key="dummy")
# Шаг 1: Начальный исследовательский запрос
print("Начало исследования...")
response = client.chat.completions.create(
model="sgr-agent",
messages=[{"role": "user", "content": "Research AI market trends"}],
stream=True,
temperature=0,
)
agent_id = None
clarification_questions = []
# Обработка потокового ответа
for chunk in response:
# Извлечь ID агента из поля model
if chunk.model and chunk.model.startswith("sgr_agent_"):
agent_id = chunk.model
print(f"\nID агента: {agent_id}")
# Проверить запросы на уточнение
if chunk.choices[0].delta.tool_calls:
for tool_call in chunk.choices[0].delta.tool_calls:
if tool_call.function and tool_call.function.name == "clarification":
args = json.loads(tool_call.function.arguments)
clarification_questions = args.get("questions", [])
# Вывести содержимое
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
# Шаг 2: Обработать уточнение, если необходимо
if clarification_questions and agent_id:
print(f"\n\nТребуется уточнение:")
for i, question in enumerate(clarification_questions, 1):
print(f"{i}. {question}")
# Предоставить уточнение
clarification = "Focus on LLM market trends for 2024-2025, global perspective"
print(f"\nПредоставление уточнения: {clarification}")
# Продолжить с ID агента
response = client.chat.completions.create(
model=agent_id, # Использовать ID агента как модель
messages=[{"role": "user", "content": clarification}],
stream=True,
temperature=0,
)
# Вывести финальный ответ
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
print("\n\nИсследование завершено!")
Пример 3: Исследовательский запрос с изображением
Отправка исследовательского запроса с локальным файлом изображения.
import base64
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8010/v1", api_key="dummy")
# Прочитать локальный файл изображения и закодировать в base64
with open("chart.png", "rb") as image_file:
image_data = base64.b64encode(image_file.read()).decode("utf-8")
image_base64 = f"data:image/png;base64,{image_data}"
# Исследовательский запрос с локальным изображением
response = client.chat.completions.create(
model="sgr-agent",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Проанализируй этот график и исследуй показанные тренды"},
{"type": "image_url", "image_url": {"url": image_base64}}
]
}],
stream=True,
temperature=0.4,
)
# Вывести потоковый ответ
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Поддерживаемые форматы изображений:
- URL изображений (HTTP/HTTPS)
- Изображения в формате Base64 (data:image/jpeg;base64,... или data:image/png;base64,...)
Примечания по использованию
- Замените
localhost:8010на URL вашего сервера api_keyможет быть любой строкой для локального сервера- ID агента возвращается в поле
modelво время потоковой передачи - Вопросы уточнения отправляются через
tool_callsс именем функцииclarification - Используйте ID агента как имя модели для продолжения разговора
⚡ Примеры cURL API - Прямые HTTP запросы с прерыванием агента и потоком уточнений
Система предоставляет полностью совместимый с OpenAI API с расширенными возможностями прерывания агента и уточнений.
Базовый исследовательский запрос
curl -X POST "http://localhost:8010/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"model": "sgr_agent",
"messages": [{"role": "user", "content": "Research BMW X6 2025 prices in Russia"}],
"stream": true,
"max_tokens": 1500,
"temperature": 0.4
}'
Поток прерывания агента и уточнений
Когда агенту требуется уточнение, он возвращает уникальный ID агента в поле model потокового ответа. Затем вы можете продолжить разговор, используя этот ID агента.
Шаг 1: Начальный запрос
curl -X POST "http://localhost:8010/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"model": "sgr_agent",
"messages": [{"role": "user", "content": "Research AI market trends"}],
"stream": true,
"max_tokens": 1500,
"temperature": 0
}'
Шаг 2: Агент запрашивает уточнение
Потоковый ответ включает ID агента в поле model:
{
"model": "sgr_agent_b84d5a01-c394-4499-97be-dad6a5d2cb86",
"choices": [{
"delta": {
"tool_calls": [{
"function": {
"name": "clarification",
"arguments": "{\"questions\":[\"Which specific AI market segment are you interested in (LLM, computer vision, robotics)?\", \"What time period should I focus on (2024, next 5 years)?\", \"Are you looking for global trends or specific geographic regions?\", \"Do you need technical analysis or business/investment perspective?\"]}"
}
}]
}
}]
}
Шаг 3: Продолжить с ID агента
curl -X POST "http://localhost:8010/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"model": "sgr_agent_b84d5a01-c394-4499-97be-dad6a5d2cb86",
"messages": [{"role": "user", "content": "Focus on LLM market trends for 2024-2025, global perspective, business analysis"}],
"stream": true,
"max_tokens": 1500,
"temperature": 0
}'
Управление агентами
# Получить всех активных агентов
curl http://localhost:8010/agents
# Получить состояние конкретного агента
curl http://localhost:8010/agents/{agent_id}/state
# Прямой endpoint уточнения
curl -X POST "http://localhost:8010/agents/{agent_id}/provide_clarification" \
-H "Content-Type: application/json" \
-d '{
"messages": [{"role": "user", "content": "Focus on luxury models only"}],
"stream": true
}'