mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-04 23:16:57 +08:00
feat: 实现 AIQuery 功能并支持 OutputSchema
- 新增 AIQuery 方法到 StepMobile,支持使用自然语言从屏幕中提取信息 - 实现 AIQuery 在 driver_ext_ai.go 中的完整功能,包括屏幕截图和 LLM 查询 - 添加 OutputSchema 支持,允许用户定义自定义输出格式进行结构化查询 - 新增 ToolAIQuery MCP 工具,完整集成到 MCP 服务器中 - 在 ActionOptions 中添加 OutputSchema 字段和 WithOutputSchema 选项函数 - 添加 ACTION_Query 的配置支持和字段映射 - 完善测试覆盖: * 添加 TestAIQuery 单元测试,包含多种 OutputSchema 使用场景 * 添加 TestToolAIQuery MCP 工具测试 * 定义 GameInfo、UIElementInfo 等结构体用于测试 - 更新文档: * 在 docs/uixt/ai.md 中添加完整的 AIQuery 使用指南 * 包含基本用法、OutputSchema 示例、最佳实践等 - 支持复杂的嵌套结构体和数组类型的 OutputSchema - 与现有 AIAction、AIAssert 功能保持一致的 API 设计
This commit is contained in:
@@ -115,6 +115,7 @@ func TestToolInterfaces(t *testing.T) {
|
||||
&ToolSecondaryClickBySelector{},
|
||||
&ToolWebCloseTab{},
|
||||
&ToolAIAction{},
|
||||
&ToolAIQuery{},
|
||||
&ToolFinished{},
|
||||
}
|
||||
|
||||
@@ -1308,6 +1309,39 @@ func TestToolAIAction(t *testing.T) {
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
// TestToolAIQuery tests the ToolAIQuery implementation
|
||||
func TestToolAIQuery(t *testing.T) {
|
||||
tool := &ToolAIQuery{}
|
||||
|
||||
// Test Name
|
||||
assert.Equal(t, option.ACTION_Query, tool.Name())
|
||||
|
||||
// Test Description
|
||||
assert.NotEmpty(t, tool.Description())
|
||||
|
||||
// Test Options
|
||||
options := tool.Options()
|
||||
assert.NotNil(t, options)
|
||||
|
||||
// Test ConvertActionToCallToolRequest with valid params
|
||||
action := option.MobileAction{
|
||||
Method: option.ACTION_Query,
|
||||
Params: "What is displayed on the screen?",
|
||||
}
|
||||
request, err := tool.ConvertActionToCallToolRequest(action)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, string(option.ACTION_Query), request.Params.Name)
|
||||
assert.Equal(t, "What is displayed on the screen?", request.Params.Arguments["prompt"])
|
||||
|
||||
// Test ConvertActionToCallToolRequest with invalid params
|
||||
invalidAction := option.MobileAction{
|
||||
Method: option.ACTION_Query,
|
||||
Params: 123, // should be string
|
||||
}
|
||||
_, err = tool.ConvertActionToCallToolRequest(invalidAction)
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
// TestToolFinished tests the ToolFinished implementation
|
||||
func TestToolFinished(t *testing.T) {
|
||||
tool := &ToolFinished{}
|
||||
|
||||
Reference in New Issue
Block a user