Создание интеллектуальных мультиагентных рабочих процессов с помощью функции передачи задач в Mistral Agents API

В этом руководстве мы рассмотрим, как создавать интеллектуальные мультиагентные рабочие процессы с помощью функции передачи задач в Mistral Agents API. Это позволяет различным агентам работать вместе, передавая задачи друг другу, что позволяет решать сложные задачи модульным и эффективным способом.

Мы создадим систему, в которой агенты сотрудничают для ответа на вопросы, связанные с инфляцией — выполняют расчёты, извлекают данные из интернета и создают визуализации — чтобы предоставлять чёткие, точные и динамичные ответы.

Шаг 1: Настройка зависимостей

Установка библиотек

“`
pip install mistralai pydantic
“`

Загрузка ключа API Mistral

Вы можете получить ключ API на сайте https://console.mistral.ai/api-keys.

“`
from getpass import getpass
MISTRALAPIKEY = getpass(‘Enter Mistral API Key: ‘)
“`

Шаг 2: Предварительные условия и настройка агента

Инициализация агента

“`
from mistralai import CompletionArgs, ResponseFormat, JSONSchema
from pydantic import BaseModel
from mistralai import Mistral

client = Mistral(MISTRALAPIKEY)
“`

Создание пользовательской функции

Функция `adjustforinflation` вычисляет, сколько будет стоить данная сумма денег с учётом инфляции за определённый период времени. Она использует формулу сложных процентов на основе количества лет и годового уровня инфляции.

“`
def adjustforinflation(amount: float, startyear: int, endyear: int, annualinflationrate: float):
“””
Calculates inflation-adjusted value using compound formula.
“””
if endyear < startyear:
return {“error”: “End year must be greater than or equal to start year.”}

years = endyear – startyear
adjustedvalue = amount ((1 + annualinflation_rate / 100) * years)

return {
“original_amount”: amount,
“startyear”: startyear,
“endyear”: endyear,
“inflationrate”: annualinflation_rate,
“adjustedvalue”: round(adjustedvalue, 2)
}
“`

Шаг 3: Создание агентов

Определение различных агентов

В этой настройке мы определяем мультиагентную систему с помощью Mistral Agents API для обработки экономических запросов, связанных с инфляцией. Основной агент (economics-agent) действует как координатор, который направляет задачи специализированным агентам.

“`

Main Agent

economics_agent = client.beta.agents.create(
model=”mistral-large-latest”,
name=”economics-agent”,
description=”Handles economic queries and delegates inflation calculations.”,
)

Inflation Function Agent

inflation_agent = client.beta.agents.create(
model=”mistral-large-latest”,
name=”inflation-agent”,
description=”Agent that calculates inflation-adjusted value using a custom function.”,
tools=[inflation_tool],
)

Web Search Agent

websearch_agent = client.beta.agents.create(
model=”mistral-large-latest”,
name=”websearch-agent”,
description=”Agent that can search the internet for missing economic data such as inflation rates.”,
tools=[{“type”: “web_search”}]
)

Calculator Agent

from pydantic import BaseModel

class CalcResult(BaseModel):
reasoning: str
result: str

calculator_agent = client.beta.agents.create(
model=”mistral-large-latest”,
name=”calculator-agent”,
description=”Agent used to make detailed calculations.”,
instructions=”When doing calculations, explain step by step.”,
completion_args=CompletionArgs(
response_format=ResponseFormat(
type=”json_schema”,
json_schema=JSONSchema(
name=”calc_result”,
schema=CalcResult.modeljsonschema(),
)
)
)
)

Graph Agent

graph_agent = client.beta.agents.create(
model=”mistral-large-latest”,
name=”graph-agent”,
description=”Agent that generates graphs using code interpreter.”,
instructions=”Use code interpreter to draw inflation trends.”,
tools=[{“type”: “code_interpreter”}]
)
“`

Шаг 4: Запуск агента

Пример A: Каков текущий уровень инфляции в Индии?

В этом примере запрос «Каков текущий уровень инфляции в Индии?» передаётся основному агенту `economicsagent`, который является основной точкой входа для обработки экономических запросов. Поскольку вопрос требует данных в реальном времени, которые не включены в статические знания агента, `economicsagent` автоматически передаёт запрос агенту `websearch_agent`, который оснащён возможностями веб-поиска.

“`
prompt = “What is the current inflation rate in India?”
response = client.beta.conversations.start(
agentid=economicsagent.id,
inputs=prompt
)
print(response.outputs[-1].content[0].text)
“`

Пример B: Каково значение 5000 с учётом инфляции с 2010 по 2023 год при годовом уровне инфляции 6,5%? Объясните шаги расчёта и постройте график с метками данных

Этот код отправляет запрос агенту `economicsagent`, проверяет, вызывает ли агент вызов определённой функции (`adjustfor_inflation`), выполняет эту функцию локально с предоставленными аргументами и возвращает вычисленный результат обратно агенту.

“`
import json

from mistralai.models import FunctionResultEntry

prompt = “””What is the inflation-adjusted value of 5,000 from the year 2010 to 2023 with annual inflation rate of 6.5%.
Explain calculation steps and plot a graph with data labels”””

response = client.beta.conversations.start(
agentid=economicsagent.id,
inputs=prompt
)

Check for function call

if response.outputs[-1].type == “function.call” and response.outputs[-1].name == “adjustforinflation”:
args = json.loads(response.outputs[-1].arguments)

# Run local function
functionresult = json.dumps(adjustfor_inflation(args))

# Return result to Mistral
result_entry = FunctionResultEntry(
toolcallid=response.outputs[-1].toolcallid,
result=function_result
)

response = client.beta.conversations.append(
conversationid=response.conversationid,
inputs=[result_entry]
)

print(response.outputs[-1].content)
else:
print(response.outputs[-1].content)
“`

Источник

Оставьте комментарий