~ day 5-7 of learning ai agents by building (skipped a lot of days without building):

- cделал API для structural output: так как делаю пока только для apple foundation model то в swift это работает на DynamicGenerationSchema: таким образом используется нативный swift api, однако он собирается динамически на основе dart api - сделал API для tool calls - также только для apple foundation model и также динамиески. Логика похожая: так как в swift api нет возможности создавать tool динамически как DynamicGenerationSchema, то используется один динамический Tool struct, в который передаются как параметры (name, description), так и invoker - тот класс который цепляется к flutter channel и вызывает нативную функцию dart. Для этого api не стал использовать hooks и pigeons так как на этом этапе лучше поэкспериментировать напрямую. В итоге - со стороны dart есть унифицированный tool call api работая с которым можно не знать с каким именно бекендом будет работа.

таким образом бекенд (llm) может отвечать как as structural output, так и plain text (что интересно, у каждого - разный response поэтому пришлось разделить буквально каждый случай)

~ day 5-7 of learning ai agents by building (skipped a lot of days without building):
- cделал API для structural output: так как делаю пока только для apple foundation model то в swift это работает н... | Сетка — социальная сеть от hh.ru
~ day 5-7 of learning ai agents by building (skipped a lot of days without building):
- cделал API для structural output: так как делаю пока только для apple foundation model то в swift это работает н... | Сетка — социальная сеть от hh.ru ~ day 5-7 of learning ai agents by building (skipped a lot of days without building):
- cделал API для structural output: так как делаю пока только для apple foundation model то в swift это работает н... | Сетка — социальная сеть от hh.ru