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
yandex_ai [2026/09/06 12:57]
val [Черновик]
yandex_ai [2026/09/06 13:03] (current)
val [Черновик]
Line 170: Line 170:
     print("​Ошибка парсинга ответа модели:",​ result_text)     print("​Ошибка парсинга ответа модели:",​ result_text)
 </​code><​code>​ </​code><​code>​
 +$ cat request_to_agent_with_tools.py
 +import sys
 +import os
 +import random
  
 +from yandex_ai_studio_sdk import AIStudio
 +#from rich import inspect
 +
 +def request_to_agent_with_tools(user_request,​ system_prompt,​ context_messages=None,​ tools=None):​
 +
 +    sdk = AIStudio(
 +        folder_id=os.getenv("​YANDEX_FOLDER_ID"​),​
 +        auth=os.getenv("​YANDEX_API_KEY"​)
 +    )
 +
 +    sdk_tools = []
 +    for item in tools:
 +        tool = sdk.tools.function(
 +            parameters={"​type":​ "​object","​properties":​ {}},
 +            name=item["​func_name"​],​
 +            description=item["​description"​]
 +        )
 +        sdk_tools.append(tool)
 +
 +    messages = [{"​role":​ "​system",​ "​text":​ system_prompt}]
 +
 +    if context_messages:​
 +        messages.extend(context_messages)
 +
 +    messages.append({"​role":​ "​user",​ "​text":​ user_request})
 +
 +    #model = sdk.chat.completions("​yandexgpt"​)
 +    model = sdk.chat.completions("​aliceai-llm"​)
 +    model = model.configure(
 +        temperature=0.3,​
 +        max_tokens=1500,​
 +        tools=sdk_tools
 +    )
 +
 +    #​inspect(messages,​ methods=True)
 +    #​inspect(messages)
 +    response = model.run(messages)
 +    #​inspect(response,​ methods=True)
 +
 +    choice = response.choices[0]
 +    if choice.tool_calls:​
 +        return choice.tool_calls[0].function.name
 +    else:
 +        return choice.text
 +
 +if __name__ == "​__main__":​
 +
 +    system_prompt = (
 +        "Ты — ассистент.\n"​
 +        "​Отвечай кратко.\n"​
 +    )
 +
 +    chat_context = []
 +    #​chat_context = [
 +    #    {"​role":​ "​user",​ "​text":​ "​Привет! Меня зовут Алексей,​ я программист."​},​
 +    #    {"​role":​ "​assistant",​ "​text":​ "​Привет,​ Алексей! Рад знакомству. Чем могу помочь?"​}
 +    #]
 +
 +    # Определяем функцию для инструмента
 +    def get_random_number() -> int:
 +        return random.randint(1,​ 100)
 +    def get_random_fruit() -> str:
 +        words = ["​яблоко",​ "​банан",​ "​апельсин",​ "​груша",​ "​киви"​]
 +        return random.choice(words)
 +    #​print(get_random_number())
 +    #​print(get_random_fruit())
 +
 +    func_list = [
 +        {
 +            "​func_name":​ "​random_number",​
 +            "​description":​ "​Используй эту функцию,​ когда пользователь просит назвать его счастливое число."​
 +        },
 +        {
 +            "​func_name":​ "​random_fruit",​
 +            "​description":​ "​Используй эту функцию,​ когда пользователь просит назвать его любимый фрукт."​
 +        }
 +    ]
 +    ​
 +    while True:
 +        try:
 +            user_request = input("​Введите ваш вопрос:​ ")
 +        except (KeyboardInterrupt,​ EOFError):
 +            print("​\nСессия завершена!"​)
 +            sys.exit(0)
 +
 +        reply_text = request_to_agent_with_tools(user_request,​ system_prompt,​ chat_context,​ func_list)
 +        if '​random_number'​ in reply_text:
 +            print(get_random_number())
 +        elif '​random_fruit'​ in reply_text:
 +            print(get_random_fruit())
 +        else:
 +            print(reply_text)
 +            chat_context.append({"​role":​ "​user",​ "​text":​ user_request})
 +            chat_context.append({"​role":​ "​assistant",​ "​text":​ reply_text})
 </​code><​code>​ </​code><​code>​
 (venv1) root@server:​~/​ai#​ cat agent_email_or_cal_2.py (venv1) root@server:​~/​ai#​ cat agent_email_or_cal_2.py
yandex_ai.txt · Last modified: 2026/09/06 13:03 by val