User Tools

Site Tools


yandex_ai

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
yandex_ai [2026/06/29 14:12]
val
yandex_ai [2026/09/21 07:31] (current)
val [Черновик]
Line 1: Line 1:
 ====== Yandex AI ====== ====== Yandex AI ======
  
-  * [[https://​aistudio.yandex.ru/​docs/​ru/​ai-studio/​quickstart/​|Как начать работать с Yandex AI Studio]]+  * [[https://​aistudio.yandex.ru/​docs/​ru/​ai-studio/​quickstart/​|Как начать работать с Yandex AI Studio]] ​(выбираем AI SDK) 
 + 
 +  * [[Yandex SpeechKit]],​ AI Studio -> Создать API-ключ
  
 <​code>​ <​code>​
-(venv1) ~/ai$ pip install yandex-ai-studio-sdk+(venv1) ~/ai$  ​export YANDEX_API_KEY=AQVN3_tpBw9JigLSI1107j0xhkgREwzwD2VCZx5FzA
  
-(venv1) ~/ai$  export ​API_KEY="​y0_AgAAA11AA5aXjoAATuwQAAAADqIwuHRJ5znNT2QAm6HmHHbKjtghcsbgk"​+(venv1) ~/ai$ export ​YANDEX_FOLDER_ID=b1gg4j6ru4esprat3uu7 
 +</​code>​
  
-(venv1) ~/ai$ export FOLDER_ID=b1gg4j6ru4esprat3uu7+  * [[Язык программирования Python#​request_to_llm.py]] 
 +  * [[Язык программирования Python#​openai_request_to_llm.py]]
  
-(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) 
-</​code><​code>​ 
-(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) 
-</​code><​code>​ 
-(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) 
- 
-</​code>​ 
yandex_ai.1782731560.txt.gz · Last modified: 2026/06/29 14:12 by val