41 lines
1.9 KiB
C#
41 lines
1.9 KiB
C#
using CodeBase.Models;
|
||
using System.Collections.Generic;
|
||
using System.Text;
|
||
|
||
public class LlmPromptBuilder
|
||
{
|
||
public string BuildPrompt(string userQuestion, List<CodeChunk> foundChunks)
|
||
{
|
||
var sb = new StringBuilder();
|
||
|
||
// 1. Задаем жесткую роль и ограничения
|
||
sb.AppendLine("Ты — опытный разработчик и архитектор. Твоя задача — ответить на вопрос пользователя.");
|
||
sb.AppendLine("ОТВЕЧАЙ СТРОГО НА ОСНОВЕ ПРЕДОСТАВЛЕННОГО КОДА НИЖЕ.");
|
||
sb.AppendLine("Если в коде нет ответа на вопрос, честно скажи: «В данном фрагменте кода нет этой информации». Не придумывай функции, которых нет в тексте.");
|
||
|
||
sb.AppendLine("\n================ ПРЕДОСТАВЛЕННЫЙ КОД ================");
|
||
|
||
// 2. Вклеиваем найденные чанки с контекстом
|
||
foreach (var chunk in foundChunks)
|
||
{
|
||
sb.AppendLine($"Файл: {chunk.FilePath}");
|
||
sb.AppendLine($"Класс: {chunk.ClassName}");
|
||
sb.AppendLine($"Метод: {chunk.MethodName}");
|
||
if (!string.IsNullOrEmpty(chunk.Documentation))
|
||
{
|
||
sb.AppendLine($"Документация: {chunk.Documentation}");
|
||
}
|
||
sb.AppendLine("Код:");
|
||
sb.AppendLine("```csharp");
|
||
sb.AppendLine(chunk.Content);
|
||
sb.AppendLine("```");
|
||
sb.AppendLine("--------------------------------------------------");
|
||
}
|
||
|
||
// 3. Добавляем сам вопрос
|
||
sb.AppendLine("\n================ ВОПРОС ПОЛЬЗОВАТЕЛЯ ================");
|
||
sb.AppendLine(userQuestion);
|
||
|
||
return sb.ToString();
|
||
}
|
||
} |