Как стать автором
Обновить

Комментарии 8

А можно на человечьем для чего эта штука и примеры использования - очень много текста - какие то умные слова, а хочется сначала кратко - тип вот для такой задачи, вот так и так использовать вот такой результат. А если хочешь подробнее, то уже в доку.

Использование AI-функции решает проблему как структурировать ответ от LLM так, чтобы на выходе получить что-то ожидаемое, а не просто текст.
Например, мы хотим, чтобы LLM ответила на вопрос "что есть <X-по-описанию-Y>?"
Есть соответствующий пример AI-функция "generate_what_is" https://github.com/ady1981/core-kbt/blob/master/ai_functions/generate_what_is/prompt.md.j2
Допустим нас интересует столица России.
В промпте вопрос выглядит как `What is {{qualifier}} {{description}}?`, т.е. нужно подставить в qualifier = capital, в description= `of Russia`
Также нужно задать контекст для промпта, например context=`Geography`
1) задаем .env файл
2) запускаем веб API для AI-функций:
`./runner.sh -s kbt-core/ai_function_server.py`
3) задаем значения в запрос и получаем ответ:

AI_FUNC_API_TOKEN=<...> ### задать секрет с которым стартовал ai_function_server.py

curl -X PUT "http://127.0.0.1:5000/ai-func/generate_what_is" \
  -H "Api-Token: $AI_FUNC_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d "{
  \"context\": \"Geography\",
  \"qualifier\": \"capital\",
  \"description\": \"of Russia\"
}"
{
  "result": {
    "final_answer": "Moscow",
    "notes": "Moscow has been the capital of Russia in its various forms (e.g., Tsardom of Russia, Soviet Union) for most of its history since the 15th century, with brief interruptions.",
    "proof": "Moscow is the capital of Russia as recognized by the Constitution of the Russian Federation and is the political, economic, and cultural center of the country. It is also the location of the Kremlin, the official residence of the President of Russia."
  }
}


А разве нельзя просто попросить LLM выдать ответ в желаемом формате, предоставив ей образец?

Да, можно в промпте задать JSON-схему и примеры, это так и работает

Бро, для схем данных есть pydantic AI, для агентов и заданий вон, marvin ai или что там сейчас еще популярно. Чем этот проект отличается от них?

Через pydantic AI можно задать prompt-теймплейт, ожидаемую JSON-schema ответа и получить работающую AI-функцию, которую можно вызывать по web API?
Для качественной AI-функции нужно задать few-shots примеры и правила. Как это удобно сделать в pydantic AI?
Вопросы о представлении и углубления знаний в pydantic AI не ставятся и не решаются, насколько можно судить. Вопросы по оптимизации качества AI-функции через оптимизацию контекста тоже не ставятся.

В pydantic может нельзя, но можно в marvin например (всё кроме API который всё равно обычно пишется под задачу). Я тоже не совсем догоняю, для чего этот фреймворк создан.

Да, структурированные ответы можно получить с помощью marvin, pydantic AI и другие фреймворки, эта фича не является ключевой.
Ключевая фича для core-kbt это представление контекста для промпта через YAML/JSON-сущности, организация из сущностей базы знаний и оптимизация промптов. Через этот подход можно работать с LLM более эффективно.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации