Fixing return to localAgi
This commit is contained in:
@@ -3,6 +3,7 @@ package agent
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
"github.com/mark3labs/mcp-go/client"
|
||||
"github.com/mark3labs/mcp-go/client/transport"
|
||||
@@ -64,19 +65,37 @@ func (m *mcpAction) Run(ctx context.Context, sharedState *types.AgentSharedState
|
||||
|
||||
// Traiter le résultat
|
||||
textResult := ""
|
||||
if result.IsError {
|
||||
return types.ActionResult{}, err
|
||||
}
|
||||
|
||||
// Extraire le texte du résultat selon le format de mark3labs/mcp-go
|
||||
for _, content := range result.Content {
|
||||
if textContent, ok := content.(*mcp.TextContent); ok {
|
||||
if textContent, ok := mcp.AsTextContent(content); ok {
|
||||
textResult += textContent.Text + "\n"
|
||||
} else {
|
||||
xlog.Error("Unsupported content type", "type", content)
|
||||
}
|
||||
}
|
||||
|
||||
// Si c'est une erreur, retourner le contenu de l'erreur comme résultat
|
||||
// plutôt que de faire échouer complètement l'action
|
||||
if result.IsError {
|
||||
xlog.Error("MCP tool returned error", "tool", m.toolName, "error", textResult)
|
||||
|
||||
// Fournir des suggestions spécifiques selon le type d'erreur
|
||||
errorMessage := textResult
|
||||
if strings.Contains(strings.ToLower(textResult), "not found") {
|
||||
if m.toolName == "web-search-web_url_read" {
|
||||
errorMessage = "L'URL spécifiée n'a pas pu être trouvée. Essayez plutôt d'utiliser l'outil de recherche web 'web-search-searxng_web_search' pour chercher des informations sur ce sujet."
|
||||
} else {
|
||||
errorMessage = "Ressource non trouvée: " + textResult
|
||||
}
|
||||
}
|
||||
|
||||
// Retourner le message d'erreur comme résultat pour que l'agent puisse réagir
|
||||
return types.ActionResult{
|
||||
Result: "Erreur: " + errorMessage,
|
||||
}, nil
|
||||
}
|
||||
|
||||
return types.ActionResult{
|
||||
Result: textResult,
|
||||
}, nil
|
||||
|
||||
Reference in New Issue
Block a user