Fixing return to localAgi
This commit is contained in:
@@ -3,6 +3,7 @@ package agent
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/mark3labs/mcp-go/client"
|
"github.com/mark3labs/mcp-go/client"
|
||||||
"github.com/mark3labs/mcp-go/client/transport"
|
"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
|
// Traiter le résultat
|
||||||
textResult := ""
|
textResult := ""
|
||||||
if result.IsError {
|
|
||||||
return types.ActionResult{}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Extraire le texte du résultat selon le format de mark3labs/mcp-go
|
// Extraire le texte du résultat selon le format de mark3labs/mcp-go
|
||||||
for _, content := range result.Content {
|
for _, content := range result.Content {
|
||||||
if textContent, ok := content.(*mcp.TextContent); ok {
|
if textContent, ok := mcp.AsTextContent(content); ok {
|
||||||
textResult += textContent.Text + "\n"
|
textResult += textContent.Text + "\n"
|
||||||
} else {
|
} else {
|
||||||
xlog.Error("Unsupported content type", "type", content)
|
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{
|
return types.ActionResult{
|
||||||
Result: textResult,
|
Result: textResult,
|
||||||
}, nil
|
}, nil
|
||||||
|
|||||||
Reference in New Issue
Block a user