у вас нет доступа, то в целях экономии времени на мастер-классе, мы предлагаем зарегистрироваться заранее ― в перерыве или дома Используйте свой Yandex Cloud Если у вас есть доступ к своему облаку, вы можете эксперимен- тировать. Это не потребует больших вложений! Используйте временные ключи Если у вас есть своё Python-окружение, которое вы готовы использовать, и хотите попробовать прямо сейчас
свой Yandex Cloud Если у вас есть доступ к своему облаку, вы можете эксперимен- тировать. Это не потребует больших вложений! Используйте временные ключи
пользователь хочет получить информацию о конкретных винах или их стоимости", "parameters": SearchWinePriceList.model_json_schema()}] res = client.responses.create( model = model, store = True, tools = tools, instructions = instruction, input = "Какое самое дешёвое вино из Австралии?" ) Function Calling на практике Чёткое описание параметров JSON-схемой
"function_call"] if tool_calls: out = [] for call in tool_calls: args = json.loads(call.arguments) result = find_wines(args) out.append({ "type": "function_call_output", "call_id": call.call_id, "output": result }) res = client.responses.create( model=model, input=out, tools=tools, previous_response_id=res.id, ) Function Calling на практике А есть ли Function Call? Вызываем реальную функцию Передаём результаты LLM
-> str: """Получить меню блюд ресторана в виде таблицы в формате Markdown""" return open("../data/menu/food.md",encoding="utf8").read() @mcp.tool() def get_drinks_menu() -> str: """Получить меню напитков в виде таблицы в формате Markdown""" return open("../data/menu/drinks.md",encoding="utf8").read() Реализация MCP-сервера Используем библиотеку Декорируем все MCP-функции Обязательно пишем описания для LLM!
цен на вино", "server_url": "http://cathy.ycloud.eazify.net:8000/sse" } class AddToCart(BaseModel): """Эта функция позволяет положить или добавить вино в корзину""" wine_name: str = Field(description=“Название вина", default=None) count: int = Field( description="Количество бутылок", default=1) def process(self, session_id): … Прячем всё в специальный класс 01 02 Обязательно пишем описания для LLM! Функция для обработки
Agent( name="Sommelier_Agent", instructions="Ты профессиональный сомелье, который может рекомендовать соответствие еды и вина или других напитков. Используй доступные тебе данные ― таблицу соответствий блюд и напитков", model=model, tools=[FileSearchTool( max_num_results=5, vector_store_ids=[vector_store.id], )] ) ADK реализовал класс, похожий на наш!
"url": "http://cathy.ycloud.eazify.net:8001/sse"}) await rest_server.connect() waiter = Agent( name="Waiter_Agent", instructions="Ты профессиональный официант…“, mcp_servers=[rest_server], handoffs=[sommelier]) res = await Runner.run(waiter, "Сколько стоит самый дорогой стейк?",run_config=rc) print(res.final_output) Официант может передать работу сомелье!
официант…", mcp_servers=[rest_server], tools=[ sommelier.as_tool( "Sommelier", "Агент-сомелье, который может подобрать еду к вину и наоборот") ] Агент может выступать как инструмент
Векторные БД Память Function Calling LangGraph Построение агентных конфигураций: Граф взаимодействия между агентами Сохранение состояния системы Трассировка взаимодействий ReAct-агенты Agentic Workflows OpenAI Agents SDK SmolAgents
дальше официанту или сомелье Состояние Диспетчер Официант Знает меню Передаёт запрос сомелье в случае необходимости Сомелье Знает соответствия блюд и вина
разными фреймворками и представляют собой спектр от явной и предска- зуемой оркестрации агентов, используемой в реальных индустриальных системах, до планирующих агентов с кодогенерацией, которые лучше подходят для исследовательских задач Агентные технологии позволяют создавать на основе LLM более сложные системы из коммуницирующих между собой автономных рассуждающих агентов. Сам по себе агент — это метарассуждения с инструментами Yandex Cloud поддерживает OpenAI Responses API, что позволяет использовать множество готовых фреймворков (OpenAI Agents SDK, LangGraph и др.)