mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-12 16:01:27 +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:
20
step_ui.go
20
step_ui.go
@@ -201,6 +201,18 @@ func (s *StepMobile) AIAction(prompt string, opts ...option.ActionOption) *StepM
|
||||
return s
|
||||
}
|
||||
|
||||
// AIQuery query information from screen using VLM
|
||||
func (s *StepMobile) AIQuery(prompt string, opts ...option.ActionOption) *StepMobile {
|
||||
action := option.MobileAction{
|
||||
Method: option.ACTION_Query,
|
||||
Params: prompt,
|
||||
Options: option.NewActionOptions(opts...),
|
||||
}
|
||||
|
||||
s.obj().Actions = append(s.obj().Actions, action)
|
||||
return s
|
||||
}
|
||||
|
||||
// DoubleTapXY double taps the point {X,Y}, X & Y is percentage of coordinates
|
||||
func (s *StepMobile) DoubleTapXY(x, y float64, opts ...option.ActionOption) *StepMobile {
|
||||
s.obj().Actions = append(s.obj().Actions, option.MobileAction{
|
||||
@@ -863,11 +875,15 @@ func runStepMobileUI(s *SessionRunner, step IStep) (stepResult *StepResult, err
|
||||
action.Method == option.ACTION_AIAssert || action.Method == option.ACTION_Query {
|
||||
if config.LLMService != "" && action.Options.LLMService == "" {
|
||||
action.Options.LLMService = string(config.LLMService)
|
||||
log.Debug().Str("action", string(action.Method)).Str("llmService", action.Options.LLMService).Msg("Applied global LLM service config to action")
|
||||
log.Debug().Str("action", string(action.Method)).
|
||||
Str("llmService", action.Options.LLMService).
|
||||
Msg("Applied global LLM service config to action")
|
||||
}
|
||||
if config.CVService != "" && action.Options.CVService == "" {
|
||||
action.Options.CVService = string(config.CVService)
|
||||
log.Debug().Str("action", string(action.Method)).Str("cvService", action.Options.CVService).Msg("Applied global CV service config to action")
|
||||
log.Debug().Str("action", string(action.Method)).
|
||||
Str("cvService", action.Options.CVService).
|
||||
Msg("Applied global CV service config to action")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user