Попытки в мультипарсинг

This commit is contained in:
2026-07-24 13:47:21 +04:00
parent b2a13528ee
commit eb8dac7627
22 changed files with 1486 additions and 37 deletions

View File

@@ -4,22 +4,24 @@ using System.Text;
public class LlmPromptBuilder
{
public string BuildPrompt(string userQuestion, List<GraphNodeContext> graphContexts)
public string BuildPrompt(string userQuestion, List<RetrievedContext> graphContexts)
{
var promptBuilder = new StringBuilder();
promptBuilder.AppendLine("Ты — опытный C#-архитектор. Твоя задача — ответить на вопрос пользователя, опираясь ИСКЛЮЧИТЕЛЬНО на предоставленный граф вызовов и зависимостей кода. Не придумывай методы или классы, которых нет в контексте.");
// Универсальная роль архитектора без привязки к конкретному языку
promptBuilder.AppendLine("Ты — опытный ИТ-архитектор и разработчик. Твоя задача — ответить на вопрос пользователя, опираясь ИСКЛЮЧИТЕЛЬНО на предоставленный граф вызовов и зависимостей кода. Не придумывай методы или классы, которых нет в контексте.");
promptBuilder.AppendLine("\nКонтекст из кодовой базы (Граф зависимостей):");
foreach (var node in graphContexts)
{
promptBuilder.AppendLine("--------------------------------------------------");
promptBuilder.AppendLine($"[ГЛАВНЫЙ УЗЕЛ]");
promptBuilder.AppendLine($"Имя: {node.MethodName}");
promptBuilder.AppendLine($"[УЗЕЛ ГРАФА]");
promptBuilder.AppendLine($"Проект: {node.ProjectName}");
promptBuilder.AppendLine($"Имя сущности: {node.EntityName}");
promptBuilder.AppendLine($"Файл: {node.FilePath}");
// Добавляем зависимости ВНИЗ (что использует метод)
if (node.OutgoingDependencies.Any())
if (node.OutgoingDependencies != null && node.OutgoingDependencies.Any())
{
promptBuilder.AppendLine("\n[ИСПОЛЬЗУЕТ ВНУТРИ СЕБЯ]:");
foreach (var dep in node.OutgoingDependencies.Distinct())
@@ -29,7 +31,7 @@ public class LlmPromptBuilder
}
// Добавляем зависимости ВВЕРХ (кто зависит от метода)
if (node.IncomingDependencies.Any())
if (node.IncomingDependencies != null && node.IncomingDependencies.Any())
{
promptBuilder.AppendLine("\n[ВЫЗЫВАЕТСЯ ИЗ]:");
foreach (var caller in node.IncomingDependencies.Distinct())