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/07/11 09:09]
val
yandex_ai [2026/09/06 13:03] (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) 
 + 
 +  * [[Язык программирования Python]]
  
 <​code>​ <​code>​
 (venv1) ~/ai$ pip install yandex-ai-studio-sdk (venv1) ~/ai$ pip install yandex-ai-studio-sdk
  
-(venv1) ~/ai$  export ​API_KEY=AQVN3_tpBw9JigLSI1107j0xhkgREwzwD2VCZx5FzA+(venv1) ~/ai$  export ​YANDEX_API_KEY=AQVN3_tpBw9JigLSI1107j0xhkgREwzwD2VCZx5FzA
  
-(venv1) ~/ai$ export ​FOLDER_ID=b1gg4j6ru4esprat3uu7+(venv1) ~/ai$ export ​YANDEX_FOLDER_ID=b1gg4j6ru4esprat3uu7
 </​code>​ </​code>​
  
Line 16: Line 18:
 <​code>​ <​code>​
 (venv1) root@server:​~/​ai#​ cat agent_rand_hello.py (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 os
 import sys import sys
Line 25: Line 24:
  
 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 39: Line 38:
         "​properties":​ {}         "​properties":​ {}
     },     },
-    name="get_random_lucky_number",+    name="lucky_number",
     description="​Используй эту функцию,​ когда пользователь просит назвать его счастливое число."​     description="​Используй эту функцию,​ когда пользователь просит назвать его счастливое число."​
 ) )
Line 68: Line 67:
     formatted_tool_calls = []     formatted_tool_calls = []
     for call in choice.tool_calls:​     for call in choice.tool_calls:​
-        if call.function.name == "get_random_lucky_number":+        if call.function.name == "lucky_number":
             tool_result = get_random_lucky_number()             tool_result = get_random_lucky_number()
             print(f"​->​ Результат локальной функции:​ {tool_result}"​)             print(f"​->​ Результат локальной функции:​ {tool_result}"​)
Line 75: Line 74:
             messages.append({             messages.append({
                 "​role":​ "​user",​                 "​role":​ "​user",​
-                "​content":​ f"​Результат выполнения функции ​get_random_lucky_number: {tool_result}"​+                "​content":​ f"​Результат выполнения функции ​lucky_number: {tool_result}"​
             })             })
  
Line 99: Line 98:
  
 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 170: Line 169:
 except json.JSONDecodeError:​ except json.JSONDecodeError:​
     print("​Ошибка парсинга ответа модели:",​ result_text)     print("​Ошибка парсинга ответа модели:",​ result_text)
 +</​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
Line 179: Line 278:
  
 sdk = AIStudio( sdk = AIStudio(
-    folder_id=os.getenv("​FOLDER_ID"), +    folder_id=os.getenv("​YANDEX_FOLDER_ID"), 
-    auth=os.getenv("​OAUTH_TOKEN")+    auth=os.getenv("​YANDEX_API_KEY")
 ) )
  
yandex_ai.1783750160.txt.gz · Last modified: 2026/07/11 09:09 by val