Files
aiagent/androidExampleDemo/README.md
renjianbo fab1767792 aa
2026-01-20 16:06:22 +08:00

6.7 KiB
Raw Permalink Blame History

Android Agent调用示例 (Java版本)

这是一个使用Java开发的Android示例项目演示如何调用情感分析Agent。

📋 项目结构

androidExampleDemo/
├── app/
│   ├── src/
│   │   └── main/
│   │       ├── java/com/example/agentclient/
│   │       │   ├── MainActivity.java
│   │       │   ├── models/
│   │       │   │   ├── Agent.java
│   │       │   │   ├── AgentExecutionRequest.java
│   │       │   │   ├── ExecutionResponse.java
│   │       │   │   ├── ExecutionStatusResponse.java
│   │       │   │   └── TokenResponse.java
│   │       │   └── utils/
│   │       │       └── ApiClient.java
│   │       ├── res/
│   │       │   ├── layout/
│   │       │   │   └── activity_main.xml
│   │       │   ├── values/
│   │       │   │   └── strings.xml
│   │       │   └── xml/
│   │       │       └── network_security_config.xml
│   │       └── AndroidManifest.xml
│   └── build.gradle
├── build.gradle
├── settings.gradle
├── gradle.properties
└── README.md

🚀 快速开始

1. 配置API地址

app/src/main/java/com/example/agentclient/utils/ApiClient.java 中修改:

private static final String BASE_URL = "http://your-server-ip:8037";

2. 配置登录信息

MainActivity.java 中修改:

private static final String USERNAME = "admin";
private static final String PASSWORD = "123456";
private static final String AGENT_NAME = "情感分析Agent";  // Agent名称

3. 运行项目

  1. 使用Android Studio打开项目
  2. 同步Gradle依赖
  3. 运行到Android设备或模拟器

📱 功能特性

  • 用户登录
  • 调用Agent API
  • 实时显示执行状态
  • 显示Agent回复
  • 错误处理

🔧 依赖库

  • Retrofit2网络请求
  • OkHttpHTTP客户端
  • GsonJSON解析
  • AndroidXAndroid支持库

📝 使用说明

  1. 登录

    • 应用启动后会自动登录(使用配置的用户名和密码)
    • 登录成功后可以开始使用Agent
  2. 发送消息

    • 在输入框中输入文本
    • 点击"发送"按钮
    • 等待Agent处理并返回结果
  3. 查看结果

    • Agent的回复会显示在消息列表中
    • 执行状态会实时更新

🔑 API说明

登录API

POST /api/v1/auth/login
Content-Type: application/x-www-form-urlencoded

username=admin&password=123456

执行Agent API

POST /api/v1/executions
Authorization: Bearer <token>
Content-Type: application/json

{
  "agent_id": "agent-id",
  "input_data": {
    "query": "用户输入",
    "USER_INPUT": "用户输入"
  }
}

获取执行状态API

GET /api/v1/executions/{execution_id}/status
Authorization: Bearer <token>

获取执行结果API

GET /api/v1/executions/{execution_id}
Authorization: Bearer <token>

🎯 示例调用情感分析Agent

// 1. 登录获取token
Call<TokenResponse> loginCall = ApiClient.getService().login("admin", "123456");
loginCall.enqueue(new Callback<TokenResponse>() {
    @Override
    public void onResponse(Call<TokenResponse> call, Response<TokenResponse> response) {
        if (response.isSuccessful()) {
            String token = "Bearer " + response.body().getAccessToken();
            
            // 2. 通过名称查找Agent
            Call<List<Agent>> agentsCall = ApiClient.getService()
                .getAgents("情感分析Agent", 100, token);
            agentsCall.enqueue(new Callback<List<Agent>>() {
                @Override
                public void onResponse(Call<List<Agent>> call, Response<List<Agent>> response) {
                    if (response.isSuccessful() && response.body() != null) {
                        String agentId = response.body().get(0).getId();
                        
                        // 3. 执行Agent
                        Map<String, Object> inputData = new HashMap<>();
                        inputData.put("query", "这个产品真的很棒!");
                        inputData.put("USER_INPUT", "这个产品真的很棒!");
                        
                        AgentExecutionRequest request = new AgentExecutionRequest(agentId, inputData);
                        Call<ExecutionResponse> execCall = ApiClient.getService()
                            .executeAgent(request, token);
                        execCall.enqueue(new Callback<ExecutionResponse>() {
                            @Override
                            public void onResponse(Call<ExecutionResponse> call, 
                                    Response<ExecutionResponse> response) {
                                if (response.isSuccessful()) {
                                    String executionId = response.body().getId();
                                    // 4. 轮询获取结果见MainActivity.pollExecutionResult方法
                                }
                            }
                            
                            @Override
                            public void onFailure(Call<ExecutionResponse> call, Throwable t) {
                                // 处理错误
                            }
                        });
                    }
                }
                
                @Override
                public void onFailure(Call<List<Agent>> call, Throwable t) {
                    // 处理错误
                }
            });
        }
    }
    
    @Override
    public void onFailure(Call<TokenResponse> call, Throwable t) {
        // 处理错误
    }
});

📦 构建要求

  • Android Studio Hedgehog | 2023.1.1 或更高版本
  • JDK 17 或更高版本
  • Android SDK API 24 或更高版本
  • Gradle 8.0 或更高版本

💻 开发语言

  • Java 17 - 主要开发语言
  • 使用Retrofit进行网络请求
  • 使用Gson进行JSON解析

🔒 安全注意事项

  1. 不要硬编码密码:生产环境应该使用安全的认证方式
  2. 使用HTTPS生产环境必须使用HTTPS
  3. Token管理妥善保管和刷新Token
  4. 网络安全配置Android 9+需要配置网络安全策略

🐛 故障排除

问题1网络连接失败

  • 检查API地址是否正确
  • 检查设备网络连接
  • 检查服务器是否运行

问题2登录失败

  • 检查用户名和密码是否正确
  • 检查服务器认证服务是否正常

问题3Agent执行失败

  • 检查Agent ID是否正确
  • 检查Agent是否已发布
  • 查看服务器日志获取详细错误信息

📚 相关文档