User Tools

Site Tools


использование_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
использование_ai-агентов [2026/07/17 07:45]
val
использование_ai-агентов [2026/08/03 09:52] (current)
val [Черновик]
Line 4: Line 4:
  
   * Сегодня,​ наверное,​ нет пользователя сети Интернет,​ который бы не "​общался"​ (хотя бы через чат в поисковой системе) с большими языковыми моделями (LLM), или, как это часто называют,​ искусственным интеллектом (AI)    * Сегодня,​ наверное,​ нет пользователя сети Интернет,​ который бы не "​общался"​ (хотя бы через чат в поисковой системе) с большими языковыми моделями (LLM), или, как это часто называют,​ искусственным интеллектом (AI) 
-  * Невероятные результаты,​ которые они показывают в качестве справочных и систем обработки данных,​ вызывают желание ​"поручить" ​им самостоятельное решение каких либо задач+  * Невероятные результаты,​ которые они показывают в качестве справочных и систем обработки данных,​ вызывают желание ​найти им применение в решении каких либо ​повседневных ​задач
   * Для этого используются AI агенты,​ и если Вы пока не работали с ними, наш вебинар для Вас   * Для этого используются AI агенты,​ и если Вы пока не работали с ними, наш вебинар для Вас
  
Line 10: Line 10:
  
   * Написать своего первого AI агента на python   * Написать своего первого AI агента на python
-  * Реализовать MVP с использованием AI и Asterisk по такому ​описанию: ​перед походом в магазин,​ звоним (можно несколько раз) ​на некий ​номер ​и просим ​запомнить, что хотим купить, в магазине,​ время от времени,​ звоним ​на тот же номер, говорим,​ что купили и просим ​напомнить, что еще осталось +  * Реализовать MVP с использованием AI и Asterisk по описанию: ​Перед походом в магазин,​ звоним (можно несколько раз) ​ИИ агенту и просим ​добавить ​в список покупок ​товар, о котором "вспомнили". Затем, в магазине,​ время от времени, ​снова ​звоним агенту, говорим,​ что купили и просим перечислить, что еще осталось 
-  * При разработке, ​в свою очередь, активно использовать LLM+  * При разработке, ​так же, активно использовать LLM
  
 ===== Запись вебинара ===== ===== Запись вебинара =====
Line 23: Line 23:
 ===== Шаг 1. Что у нас есть, для начала ===== ===== Шаг 1. Что у нас есть, для начала =====
  
 +  * [[Голосовые сервисы помогут голосовой почте!]] (Занятие СЕМ 03.12.2019)
   * [[Язык программирования Python]]   * [[Язык программирования Python]]
 +
 +===== ToDo =====
 +
 +  * Если звоним в первый раз (контекста еще нет) - представиться (пересказать системный промпт?​)
 +  * Добавить возможность отправить список дел на почту
 +  * Добавить возможность агенту позвонить и напомнить о деле
  
 ===== Черновик ===== ===== Черновик =====
 +
 +<​code>​
 +Привет,​ я хочу купить яблоки,​ хлеб и колбасу
 +Еще надо позвонить петрову и иванову
 +Я купил яблоки и колбасу,​ что еще осталось?​
 +Петрову позвонил
 +Что надо сделать
 +</​code>​
 <​code>​ <​code>​
 ~/ai$ cp ari_rec_ai.py ari_rec_ai_content.py ~/ai$ cp ari_rec_ai.py ari_rec_ai_content.py
Line 41: Line 56:
  
 from yandex_ai_studio_sdk import AIStudio from yandex_ai_studio_sdk import AIStudio
-from rich import inspect+#from rich import inspect
  
 def request_to_agent_with_tools(user_request,​ system_prompt,​ context_messages=None,​ tools=None):​ def request_to_agent_with_tools(user_request,​ system_prompt,​ context_messages=None,​ tools=None):​
  
     sdk = AIStudio(     sdk = AIStudio(
-        folder_id=os.getenv("​FOLDER_ID"), +        folder_id=os.getenv("​YANDEX_FOLDER_ID"), 
-        auth=os.getenv("​API_KEY")+        auth=os.getenv("​YANDEX_API_KEY")
     )     )
  
Line 75: Line 90:
  
     #​inspect(messages,​ methods=True)     #​inspect(messages,​ methods=True)
-    inspect(messages)+    ​#inspect(messages)
     response = model.run(messages)     response = model.run(messages)
-   inspect(response,​ methods=True)+    ​#​inspect(response,​ methods=True)
  
     choice = response.choices[0]     choice = response.choices[0]
Line 116: Line 131:
             "​description":​ "​Используй эту функцию,​ когда пользователь просит назвать его любимый фрукт."​             "​description":​ "​Используй эту функцию,​ когда пользователь просит назвать его любимый фрукт."​
         }         }
- 
     ]     ]
 +    ​
     while True:     while True:
         try:         try:
Line 124: Line 138:
         except (KeyboardInterrupt,​ EOFError):         except (KeyboardInterrupt,​ EOFError):
             print("​\nСессия завершена!"​)             print("​\nСессия завершена!"​)
-            compressor_instruction = ( 
-                "Ты — инструмент оптимизации контекста. Проанализируй историю диалога. " 
-                "​Удали выполненные дела, приветствия и воду. Сформулируй ОДНО лаконичное " 
-                "​сообщение от лица пользователя,​ в котором отражена только актуальная суть " 
-                "и невыполненные задачи/​оставшиеся вопросы на текущий момент."​ 
-            ) 
-            reply_text = request_to_agent_with_tools(user_request,​ compressor_instruction,​ chat_context,​ func_list) 
-            print(reply_text) 
             sys.exit(0)             sys.exit(0)
  
         reply_text = request_to_agent_with_tools(user_request,​ system_prompt,​ chat_context,​ func_list)         reply_text = request_to_agent_with_tools(user_request,​ system_prompt,​ chat_context,​ func_list)
-        if reply_text == '​random_number':​+        if '​random_number' ​in reply_text:
             print(get_random_number())             print(get_random_number())
-        elif reply_text == '​random_fruit':​+        elif '​random_fruit' ​in reply_text:
             print(get_random_fruit())             print(get_random_fruit())
         else:         else:
Line 146: Line 152:
 <​code>​ <​code>​
 # cat ~asterisk/​ai/​ari_rec_ai_content.py # cat ~asterisk/​ai/​ari_rec_ai_content.py
 +</​code><​code>​
 import os import os
 import json import json
Line 232: Line 239:
     print(f"​Статус-код ответа:​ {response.status_code}"​)     print(f"​Статус-код ответа:​ {response.status_code}"​)
     print(f"​Текст ответа:​ {response.text}"​)     print(f"​Текст ответа:​ {response.text}"​)
 +
 +def play_beep(channel_id):​
 +    print(f"​Проигрываем сигнал перед записью в канал {channel_id}..."​)
 +    play_url = f"​{BASE_URL}/​channels/​{channel_id}/​play"​
 +    play_payload = {"​media":​ "​sound:​beep"​}
 +    requests.post(play_url,​ params=play_payload,​ auth=AUTH)
  
 def start_recording(channel_id):​ def start_recording(channel_id):​
Line 265: Line 278:
         channel_caller_numbers[channel_id]=get_caller_number(channel_id)         channel_caller_numbers[channel_id]=get_caller_number(channel_id)
         channel_contexts[channel_id] = load_context(channel_caller_numbers[channel_id])         channel_contexts[channel_id] = load_context(channel_caller_numbers[channel_id])
 +        play_beep(channel_id)
  
         #​start_recording(channel_id)         #​start_recording(channel_id)
         # or         # or
-        detect_speech(channel_id)+        ​#detect_speech(channel_id)
  
     # Сценарий N     # Сценарий N
Line 333: Line 347:
         #​start_recording(channel_id)         #​start_recording(channel_id)
         # or         # or
-        detect_speech(channel_id)+        ​#detect_speech(channel_id) 
 + 
 +        if media_uri == "​sound:​beep":​ 
 +            print(f"​Сигнал завершен. Начинаем запись для канала {channel_id}..."​) 
 +            detect_speech(channel_id) 
 + 
 +        elif "​recording:​rec_"​ in media_uri:​ 
 +            print(f"​Воспроизведение записи завершено. Идем на новый круг для канала {channel_id}..."​) 
 +            play_beep(channel_id)
  
     # Сценарий N: Абонент повесил трубку -> Удаляем файл     # Сценарий N: Абонент повесил трубку -> Удаляем файл
использование_ai-агентов.1784263545.txt.gz · Last modified: 2026/07/17 07:45 by val