Агент Yandex AI Studio с сохранением истории диалога, скрипт Python

Данный мануал предполагает, что у вас уже зарегистрированная учетка на Яндекс Облаке, так же на нем заведен сервисный аккаунт и получен API ключ. Если нет, то сначала воспользуйтесь инструкцией для получения ключа: https://yandex.cloud/ru/docs/iam/operations/authentication/manage-api-keys#create-api-key

Также советую ознакомиться со статьей о создании базового агента на базе Yandex AI Studio и обращению к нему Python.

В данном примере рассмотрим простейший python скрипт, сохраняющий историю диалога. Суть подхода в создании массива «conversation», который передается в метод «client.responses.create» в качестве параметра «input». В данный массив по мере диалога добавляются пользовательские запросы и ответы ai-агента:

import openai

client = openai.OpenAI(
    api_key="zyz321zyz321zyz321zyz321",
    base_url="https://rest-assistant.api.cloud.yandex.net/v1",
    project="abc123abc123"
)

conversation = []

while True:
    request = input('Request: ')
    if (request):
        # выход при вводе "exit"
        if request.lower() == 'exit':
            print('Chat closed.')
            break
        conversation.append({
            "role": "user",
            "content": request
        })
        response = client.responses.create(
            prompt={
                "id": "abc123abc123",
                },
            input=conversation
        ) 
        if (response.output_text):
            conversation.append({
                "role": "assistant",
                "content": response.output_text
            })
            print(response.output_text)
        else:
            print('Error!')
            break

В примере ввод организуем из командной строки, для этого добавляем бесконечный цикл, выход из чата осуществляется при вводе команды «exit». В итоге получаем диалог, сохраняющий историю переписки, пример:

Request: Сколько будет 2+2?
2 + 2 = 4.
Request: а если еще прибавить 3?
Если к результату предыдущего примера (4) прибавить 3, то получится 7.
Request: а еще 2?
Если к 7 прибавить 2, то получится 9.