231 lines
6.7 KiB
Markdown
231 lines
6.7 KiB
Markdown
|
|
# 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` 中修改:
|
|||
|
|
|
|||
|
|
```java
|
|||
|
|
private static final String BASE_URL = "http://your-server-ip:8037";
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 配置登录信息
|
|||
|
|
|
|||
|
|
在 `MainActivity.java` 中修改:
|
|||
|
|
|
|||
|
|
```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:网络请求
|
|||
|
|
- OkHttp:HTTP客户端
|
|||
|
|
- Gson:JSON解析
|
|||
|
|
- AndroidX:Android支持库
|
|||
|
|
|
|||
|
|
## 📝 使用说明
|
|||
|
|
|
|||
|
|
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
|
|||
|
|
|
|||
|
|
```java
|
|||
|
|
// 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:登录失败
|
|||
|
|
- 检查用户名和密码是否正确
|
|||
|
|
- 检查服务器认证服务是否正常
|
|||
|
|
|
|||
|
|
### 问题3:Agent执行失败
|
|||
|
|
- 检查Agent ID是否正确
|
|||
|
|
- 检查Agent是否已发布
|
|||
|
|
- 查看服务器日志获取详细错误信息
|
|||
|
|
|
|||
|
|
## 📚 相关文档
|
|||
|
|
|
|||
|
|
- [Agent使用说明](../Agent使用说明.md)
|
|||
|
|
- [API文档](../backend/API_DOCUMENTATION.md)
|