Pull to refresh

Comments 15

Большое спасибо за содержательную и понятную статью!

А как покинуть дополнительные параметры с контекста пользователя, Токен авторизации, например?

Как вариант, добавить в функции доп. параметр token. При формировании списка функций в виде JSON исключить его (чтобы LLM о нем не знала). А при вызове call_tool наоборот - добавить.

Но вообще у MCP есть варианты авторизации/аутентификации: https://gofastmcp.com/integrations/auth0

Спс! Судя по описанию в ссылке там авторизация выполняется сервер-сервер (хотя может я чего то недопонял)

А про параметры что то я вообще не понял :)

Если вернуться к текущей статье, то нам нужно авторизовать все же нашего HR. Ну и вообще несколько шире, если у HR открыта страничка "отдела продаж", то при создании сотрудника хотелось бы покинуть этот самый id отдела

Если хотите чтобы LLM сама прокидывала "id отдела", то нужно в промте его указать (захардкодить). Тогда LLM будет знать откуда сотрудник и подставлять в параметры функции его отдел.

Хм.. т.е. HR пишет текст: "добавь сотрудника петрова"
Я из него делаю "добавь сотрудника петрова, используй следующие параметры departmentId: 121
auth token: bla-bla-bla"

ЗЫ извиняюсь, если вопрос звучит "детским", но я и вправду с этими штуками пока только поверхностно знаком )

Да, как вариант. Но думаю можно и прокидывать эту информацию в функции при их вызове.

так вот я и не могу взять в толк, как их прокидывать при вызове, т.е. пользователь отправляет нативный запрос мне в приложение, я его могу модифицировать и ретранслировать в ЛЛМ, но вызов к апи то уже сама ЛЛМ делает, и в этот процесс, на сколько я понимаю, я вмешаться не могу

Все не так :) Попробуйте воспроизвести код в статье, чтобы понятнее было :)
LLM сама ничего вызвать не может. LLM это генератор текста, она может только напечатать текст. И таки образом сообщить нам, что она хочет вызвать какой то инструмент. А мы уже должны сами распарсить это желание и вызвать нужный инструмент.

В статье это делается так:
tool_result = await call_tool(
tool_name=
tool.function.name,
arguments=eval(tool.function.arguments)
)


Вот здесь в arguments и можно подсунуть то что нам нужно.

Спасибо! я чот вот этого момента не допёр совсем!

PS. про воспроизвести вы абсолютно правы, надо... )

А есть ли польза, если совмещать подачу в ллм доступных инструментов и применять Structured Output схему? Например, если ожидается что в этом запросе будут использоваться конкретные методы и только аргументы неизвестны.

Тут не уверен, надо пробовать. Все таки вывод по тулам ожидается в офпделенном формате. Может SO его испортит...

Подскажите пожалуйста, почему Вы выбрали вариант Hermes и Deepseek в качестве парсеров?

Разве модель qwen3-14b не умеет сразу в strict json — т.е. сразу генерировать tool call формат?

Sign up to leave a comment.

Articles