tgoop.com/softwareengineervlog/2348
Create:
Last Update:
Last Update:
Промпт для исправления ошибок в коде
Некоторое время использую QWEN3-Coder-480b-А35b-Instruct и QWEN Coder. Модель в чем-то хороша, в чем-то не очень. Хочу рассказать о своем опыте борьбы с неверным поведением модели.
Когда ИИ генерирует программный код, он может допускать ошибки, как и обычный разработчик. Синтаксические проблемы исправляются довольно просто, но встречаются и более сложные случаи, связанные с семантикой.
Хочу разобрать конкретный пример, который демонстрирует, насколько по-разному может работать ИИ в зависимости от формулировки промпта.
Сообщение от интерпретатора выглядит так:
Failed to run `config` for agentsoer.nvim
vim/loader.lua:0: ...soer/projects/agentsoer.nvim/lua/agentsoer/engine/ai.lua:43: '<name>' expected near 'function'
# stacktrace:
- vim/loader.lua:0
- lua/agentsoer/commands.lua:5
- lua/agentsoer/init.lua:4
- ~/.config/nvim/lua/plugins/init.lua:34 _in_ **config**
- ~/.config/nvim/init.lua:17
На первый взгляд кажется, что это стандартная синтаксическая ошибка, но в действительности наша проблема связана с семантикой. Рассмотрим фрагмент кода, на который указывает интерпретатор:
42 local function handle_tool_call(tool_call)
43 if tool_call.function.name == "list_directory" then
44 local success, params = pcall(vim.fn.json_decode, tool_call.function.arguments)
45 if success then
Особенность в том, что "function" здесь представляет собой имя поля в таблице, а не ключевое слово Lua для объявления функций. Это требование продиктовано не локальными особенностями, а спецификацией OpenAI API. Следовательно, ИИ должен не только диагностировать суть недочёта, но и предложить корректное решение. Например, вместо замены имени поля следует использовать обращение через квадратные скобки:
['function'].name
.BY S0ER

Share with your friend now:
tgoop.com/softwareengineervlog/2348