MCPcopy
hub / github.com/the-open-agent/openagent / GetAnswerWithTool

Function GetAnswerWithTool

object/message_tool.go:63–102  ·  view source on GitHub ↗
(modelProviderName, toolName, question, user, origin, lang string)

Source from the content-addressed store, hash-verified

61}
62
63func GetAnswerWithTool(modelProviderName, toolName, question, user, origin, lang string) (string, *model.ModelResult, error) {
64 modelProvider, modelProviderObj, err := GetModelProviderFromContext("admin", modelProviderName, lang)
65 if err != nil {
66 return "", nil, err
67 }
68
69 mcpToolSet, err := buildToolSetForBuiltinTool(toolName, user, origin, lang)
70 if err != nil {
71 return "", nil, err
72 }
73
74 prompt := "You are an expert in your field and you specialize in using your knowledge to answer or solve people's problems."
75 history := []*model.RawMessage{}
76 knowledge := []*model.RawMessage{}
77
78 var writer MyWriter
79 var modelResult *model.ModelResult
80
81 if mcpToolSet != nil {
82 messages := &model.ToolMessages{
83 Messages: []*model.RawMessage{},
84 ToolCalls: nil,
85 }
86 toolSession := &model.ToolSession{
87 McpToolSet: mcpToolSet,
88 ToolMessages: messages,
89 IsVision: modelProvider != nil && model.IsVisionModel(modelProvider.SubType),
90 }
91 modelResult, err = model.QueryTextWithTools(modelProviderObj, question, &writer, history, prompt, knowledge, toolSession, lang)
92 } else {
93 modelResult, err = modelProviderObj.QueryText(question, &writer, history, prompt, knowledge, nil, lang)
94 }
95 if err != nil {
96 return "", nil, err
97 }
98
99 res := writer.String()
100 res = strings.Trim(res, "\"")
101 return res, modelResult, nil
102}

Callers 1

GetAnswerMethod · 0.92

Calls 6

IsVisionModelFunction · 0.92
QueryTextWithToolsFunction · 0.92
QueryTextMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected