Provider-Abstraktion: Agents unterstützen jetzt OpenAI + Anthropic
Backend: - ChatEndpoint: Globaler OpenAI-Fallback entfernt, Key-Check pro Provider - TelegramService/CronjobService: Provider-Weiche statt hardcoded Anthropic - AnthropicService: Preparer/Review/Finalizer sind Provider-aware - OpenAiService: Neue ChatNonStreaming()-Methode für agentic loop - ToolService: send_to_session lädt Key des Ziel-Agents - SubAgentContext: Provider-Feld hinzugefügt - ChatService: BuildSubAgentContext setzt Provider Frontend: - Key-Switch-Modal: 'Kein Key'-Option zum Entfernen der Zuweisung - ApiKeysEndpoint: keyId='none' löscht Key-Zuweisung
This commit is contained in:
1 parent
1effc6d00f
commit
02f5fe2faf
11 files changed
+422
-69
No files matched your search
+10
-4
@@ -390,7 +390,7 @@ public class ToolService
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<string> ExecuteTool(string name, JsonElement input, string workspace, MemoryService memoryService = null, string agentId = null, CancellationToken cancellationToken = default, RemoteConnectionManager remoteMgr = null, string sessionId = null, VectorSearchService vectorSearch = null, EmbeddingBackgroundService embeddingBg = null, DatabaseService db = null, ChatService chatService = null, AnthropicService anthropicService = null, string userId = null, TelegramService telegramService = null, string apiToken = null)
|
||||
public async Task<string> ExecuteTool(string name, JsonElement input, string workspace, MemoryService memoryService = null, string agentId = null, CancellationToken cancellationToken = default, RemoteConnectionManager remoteMgr = null, string sessionId = null, VectorSearchService vectorSearch = null, EmbeddingBackgroundService embeddingBg = null, DatabaseService db = null, ChatService chatService = null, AnthropicService anthropicService = null, OpenAiService openAiService = null, string userId = null, TelegramService telegramService = null, string apiToken = null)
|
||||
{
|
||||
switch (name)
|
||||
{
|
||||
@@ -742,7 +742,7 @@ public class ToolService
|
||||
}
|
||||
case "send_to_session":
|
||||
{
|
||||
if (db == null || chatService == null || anthropicService == null)
|
||||
if (db == null || chatService == null || (anthropicService == null && openAiService == null))
|
||||
return "Fehler: send_to_session nicht verfügbar";
|
||||
|
||||
var sessionIdOrName = input.GetProperty("session_id_or_name").GetString() ?? "";
|
||||
@@ -767,7 +767,10 @@ public class ToolService
|
||||
var ctx = await chatService.PrepareContext(targetSessionId, userId: userId);
|
||||
if (ctx == null)
|
||||
return $"Fehler: Session '{targetSession.Name}' ist nicht konfiguriert (kein Agent zugewiesen?)";
|
||||
ctx.ApiToken = apiToken;
|
||||
|
||||
// API-Key des Ziel-Agents auflösen (nicht den Key des aufrufenden Agents nutzen)
|
||||
var targetApiKey = await db.GetAgentApiKeyRecord(userId, ctx.AgentId);
|
||||
ctx.ApiToken = targetApiKey?.ApiKey ?? apiToken;
|
||||
|
||||
// History aufbauen – User-Message NICHT in DB speichern (wie Cronjob)
|
||||
// Stattdessen als kontextualisierte Nachricht in die History injizieren
|
||||
@@ -780,7 +783,10 @@ public class ToolService
|
||||
|
||||
try
|
||||
{
|
||||
await anthropicService.ChatNonStreaming(ctx, history);
|
||||
if (!string.IsNullOrEmpty(ctx.Provider) && openAiService != null)
|
||||
await openAiService.ChatNonStreaming(ctx, history);
|
||||
else
|
||||
await anthropicService.ChatNonStreaming(ctx, history);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user