This is an old revision of the document!
(venv1) ~/ai$ pip install yandex-ai-studio-sdk
(venv1) ~/ai$ export API_KEY="y0_AgAAA11AA5aXjoAATuwQAAAADqIwuHRJ5znNT2QAm6HmHHbKjtghcsbgk"
(venv1) ~/ai$ export FOLDER_ID=b1gg4j6ru4esprat3uu7
(venv1) root@server:~/ai# cat app.py
import os
from yandex_ai_studio_sdk import AIStudio
sdk = AIStudio(
folder_id=os.getenv("FOLDER_ID"),
auth=os.getenv("API_KEY")
)
#model = sdk.models.completions("aliceai-llm")
model = sdk.models.completions("yandexgpt")
model = model.configure(temperature=0.8, max_tokens=1500)
result = model.run("Придумай 3 необычные идеи для стартапа в сфере путешествий.")
for alternative in result:
print(alternative.text)
(venv1) root@server:~/ai# cat agent_rand_hello.py
import warnings
warnings.filterwarnings('ignore', category=UserWarning, module='yandex_ai_studio_sdk._auth')
import os
import sys
import random
from yandex_ai_studio_sdk import AIStudio
sdk = AIStudio(
folder_id=os.getenv("FOLDER_ID"),
auth=os.getenv("API_KEY")
)
# 2. Локальная Python-функция
def get_random_lucky_number() -> int:
return random.randint(1, 100)
# Регистрируем инструмент через метод sdk.tools.function
lucky_number_tool = sdk.tools.function(
parameters={
"type": "object",
"properties": {}
},
name="get_random_lucky_number",
description="Используй эту функцию, когда пользователь просит назвать его счастливое число."
)
# 3. Инициализируем модель через chat.completions
model = sdk.chat.completions("yandexgpt").configure(
temperature=0.3,
tools=[lucky_number_tool]
)
# Начальный запрос пользователя
messages = [
{"role": "user", "content": "Привет! Назови мое счастливое число на сегодня и пожелай удачи разнообразно."}
]
#messages = [
# {"role": "user", "content": "Привет! Пожелай удачи разнообразно."}
#]
print("Отправка первого запроса агенту...")
response = model.run(messages)
# Извлекаем первый вариант ответа из кортежа
choice = response.choices[0]
if hasattr(choice, 'tool_calls') and choice.tool_calls:
print(f"-> Агент запросил вызов инструмента.")
formatted_tool_calls = []
for call in choice.tool_calls:
if call.function.name == "get_random_lucky_number":
tool_result = get_random_lucky_number()
print(f"-> Результат локальной функции: {tool_result}")
# Простой подход: добавляем результат как ответ пользователя
messages.append({
"role": "user",
"content": f"Результат выполнения функции get_random_lucky_number: {tool_result}"
})
# Отправляем обновленную историю обратно модели
print("Отправка результата выполнения функции обратно агенту...")
# В run() передаем только messages, tools уже настроены
final_response = model.run(messages=messages)
print("\nИтоговый ответ AI агента:")
print(final_response.choices[0].text)
else:
print("\nОтвет модели:")
print(choice.text)
(venv1) root@server:~/ai# cat agent_email_or_cal.py
import os
import sys
#import random
import re
import json
from yandex_ai_studio_sdk import AIStudio
sdk = AIStudio(
folder_id=os.getenv("FOLDER_ID"),
auth=os.getenv("API_KEY")
)
# Функция для интеграции с календарем
def add_to_calendar(task_title: str):
"""
Ваша кастомная функция для добавления события в календарь.
"""
print(f"[Вызов функции]: Успешно добавлено в календарь: '{task_title}'")
# Примеры для тестирования (раскомментируйте нужный для проверки):
user_request = "Привет! Слушай, отправь пожалуйста письмо Ивану с отчетом."
#user_request = "Напомни мне завтра в 15:00 созвониться с коллегами по проекту."
# Расширяем системный промт для обработки двух типов команд
system_prompt = (
"Ты — ассистент, который анализирует команды пользователя и классифицирует их.\n"
"Определи, что просит сделать пользователь. Ответь строго в формате JSON.\n"
"Схема ответа JSON должна содержать следующие поля:\n"
"- 'intent': строка, может принимать значения: 'send_email', 'add_calendar' или 'unknown'.\n"
"- 'recipient_name': имя получателя (строка), если intent == 'send_email', иначе null.\n"
"- 'calendar_task': текст напоминания (строка), если intent == 'add_calendar', иначе null."
)
messages = [
{"role": "system", "text": system_prompt},
{"role": "user", "text": user_request}
]
# Вызываем модель YandexGPT
model = sdk.chat.completions("yandexgpt").configure(
temperature=0.3
)
response = model.run(messages)
match = re.search(r"\{.*\}", response.choices[0].text, re.DOTALL)
result_text = match.group(0)
#print(result_text)
#sys.exit()
try:
# Парсим JSON-ответ от модели
data = json.loads(result_text)
intent = data.get("intent")
# Сценарий 1: Отправка письма
if intent == "send_email":
recipient = data.get("recipient_name")
if recipient:
print(f"Обнаружена команда отправки письма. Получатель: {recipient}")
else:
print("Обнаружена команда отправки письма, но имя получателя не указано.")
# Сценарий 2: Добавление в календарь
elif intent == "add_calendar":
task = data.get("calendar_task")
if task:
print("Обнаружена команда календаря. Вызываю функцию...")
add_to_calendar(task)
else:
print("Обнаружена команда календаря, но текст напоминания пуст.")
# Сценарий 3: Команда не распознана
else:
print("Команда не распознана или не требует автоматических действий.")
except json.JSONDecodeError:
print("Ошибка парсинга ответа модели:", result_text)