дорогий дневник, шел 3ий день выходных. Все демонстрации пройдены, весь мусор собран, больше не знаю чем занятся.
Тут спрашивали, какую бы задачу решить на го вместо простых и тестовых, есть такая интересная задача, которую бы я отдал на аутсорс/тестовое/стажировку
Есть го-сервис, который делает запросы в LLM (gemini, Qwen-Code, GPT-4, Claude), ответ ожидает в формате
interface Response {
files: { [filePath: string]: string }
message?: string
error?: string
}
то есть овтет будет прмиерно таким
{
"files": {
"main.ts": "console.log('Hello, world!');",
"utils/helper.ts": "export function greet(name: string) { return `Hello, ${name}`; }"
},
"message": "Файлы успешно сгенерированы"
}
Проблема
Когда llm в виде стрима отдает этот json — она рисует его последовательно
то есть в таком виде
чанк 1
{
"files": {
"main.ts": "console.log('Hello
чанк 2
, world!');",
чанк 3
"utils/helper.ts":
и так далее (и чуть мелкими кусочками)...
надо сделать так, чтобы:
- когда появлялось новое название файла — слалось ws сообщение на клиент и потом поток событий на доавбление его контена
- как только появился вторйо файл — все повторялось (событие о том, что мы отдаем уже другой файл и опять поток с его содержимым
Кто готов сделать такое или есть наработки — готов буду заплатить или помочь с реализацией, просто у меня работа с проектом делается не только на стороне разработки, а еще куча дизайна, маркетинг и прочее
сейчас я в mvp прошу llm делать ответ в другом формате, но llm температурят и отдают в кривом (особенно claude) виде, gpt4 через раз, только qwen справляется
буду рад участию и упомяну на сайте codiew.io, и даже заплачу, можно будет в резюме указать
если решите поизучать как ее реализовать, есть пара известных способов:
- использовать gjson
- использовать токенайзер нативной encoding/json
- использовать решение типа https://docs.boundaryml.com/guide/baml-basics/streaming
на клиенте это будет выглядеть так https://codiew.io/r/6n0?t=12000