每日技术干货,第一时间送达!
1
这段时间AI Agent平台Manus国内业务大裁员,闹得沸沸扬扬,作为率先发布通用Agent的科技公司,曾一码难求,一度被称赞为“全球首款通用智能体产品”的Manus,现在仿佛在通用智能体研发方向上遇到了技术瓶颈,各官方社交账号也相继清空内容,大有“跑路”之嫌。
而相对于通用智能体,垂直领域的智能体,能更高效、更精准的满足用户的需求,帮助我们提高工作效率、降低生产成本。目前国内众多头部科技公司,也竞相加入了这一领域。
智谱开放平台(bigmodel.cn)在这方面做的相当不错,基于自己的GLM系列大模型,推出了众多垂直领域的应用智能体,从语言翻译,内容生成,办公效能到信息提取,智慧教育等。

最近逛智谱开放平台(bigmodel.cn),看到平台又新上架了几个不错的Agent,包括通用翻译和招投标解析,票据识别等等,都是非常实用的,因为平时会浏览一些外部技术网站和文档,所以也是第一时间体验了下翻译智能体,体验完发现翻译的质量还是非常高的,相对于传统的翻译工具和软件,智能体翻译通过海量数据训练,可以更准确的翻译,同时让整个翻译达到了信达雅,不会那么生硬。
2
在线体验:https://bigmodel.cn/trialcenter/agent?agentId=general_translation
3
智谱开放平台:https://bigmodel.cn
通用翻译Agent:https://bigmodel.cn/marketplace/agent_detail/general_translation
-
开发文档:https://bigmodel.cn/dev/api/agent/general_translation
<dependency>
<groupId>cn.bigmodel.openapi</groupId>
<artifactId>oapi-java-sdk</artifactId>
<version>release-V4-2.4.4</version>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.9.0</version>
</dependency>
<!-- Retrofit RxJava2 Adapter -->
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>adapter-rxjava2</artifactId>
<version>2.9.0</version>
</dependency>
<!-- 使用 Jackson 作为 Converter -->
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-jackson</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
注意:智谱最新版本SDK如果无法拉取,可以手动下载到本地并导入
public static String syncInvoke(String message, String selectedStrategy) throws JsonProcessingException {
System.out.println("===>>同步调用");
// 初始化消息列表
List<ChatMessage> messages = Lists.newArrayList();
// 创建用户角色的聊天消息,并添加到消息列表中
ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), message);
messages.add(chatMessage);
// 生成请求ID,使用当前时间戳确保唯一性
String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
// 创建并配置自定义变量节点
ObjectNode customVariables = mapper.createObjectNode();
customVariables.put("strategy", "reflection"); // 转写翻译策略
customVariables.put("source_lang", "en"); // 源语言为英文
customVariables.put("target_lang", "zh"); // 目标语言为中文
// 输出自定义变量JSON,用于调试和记录
System.out.println("customVariables JSON: " + customVariables.toString());
// 构建API请求对象
AgentsCompletionRequest chatCompletionRequest = AgentsCompletionRequest.builder()
.agent_id("general_translation")
.stream(Boolean.FALSE)
.messages(messages)
.custom_variables(customVariables)
.requestId(requestId)
.build();
// 调用API并获取响应
ModelApiResponse invokeModelApiResp = client.invokeAgentApi(chatCompletionRequest);
// 尝试处理API响应
try {
if(invokeModelApiResp.isSuccess()) {
// 输出响应JSON,用于调试和记录
System.out.println(mapper.writeValueAsString(invokeModelApiResp));
// 解析响应JSON以获取处理后的文本
JSONObject object = JSONObject.parseObject(mapper.writeValueAsString(invokeModelApiResp));
JSONObject data = object.getJSONObject("data");
String text = data.getJSONArray("choices").getJSONObject(0)
.getJSONArray("messages").getJSONObject(0)
.getJSONObject("content")
.getString("text");
System.out.println("text: " + text);
// 返回处理后的文本
return text;
}
} catch (JsonProcessingException e) {
// 如果发生JSON处理异常,则打印异常信息
e.printStackTrace();
}
// 如果处理失败或发生异常,返回错误提示
return"error";
}
public static String sseInvoke(String message) throws JsonProcessingException {
System.out.println("===>>流式输出");
// 创建一个列表来存储聊天消息
List<ChatMessage> messages = new ArrayList<>();
// 创建用户角色的聊天消息并添加到列表中
ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), message);
messages.add(chatMessage);
// 生成请求ID
String requestId = String.format(requestIdTemplate, System.currentTimeMillis());
// 构建代理完成请求对象
AgentsCompletionRequest chatCompletionRequest = AgentsCompletionRequest.builder()
.agent_id("general_translation")
.stream(Boolean.TRUE)
.messages(messages)
.requestId(requestId)
.build();
// 调用代理API并获取响应
ModelApiResponse sseModelApiResp = client.invokeAgentApi(chatCompletionRequest);
// 根据请求配置判断是否为流式响应
if (Boolean.TRUE.equals(chatCompletionRequest.getStream())) {
// 获取响应中的Flowable对象
Flowable<ModelData> flowable = sseModelApiResp.getFlowable();
if (flowable != null) {
// 订阅Flowable,处理流式响应中的每个数据项
flowable.doOnNext(modelData -> {
// 从模型数据中提取文本并输出
String text = extractTextFromModelData(modelData);
if (text != null) {
System.out.print(text);
} else {
System.out.println("无数据输出....");
}
}).blockingSubscribe();
}
} else {
// 处理同步响应
Object data = sseModelApiResp.getData();
System.out.println("同步响应数据: " + data);
}
// 以下代码被注释掉,但提供了另一种处理流式响应的方式
// sseModelApiResp.getFlowable().doOnNext(modelData -> System.out.println(modelData.getChoices().get(0))).blockingSubscribe();
// 打印结束标识
System.out.println("\n\n\n=======end=========");
// 返回成功标识
return"success";
}
4
为了方便使用,小编做了一个简单的聊天系统,调用了通用翻译API,同时支持选择不同的翻译策略,大家可以看下效果,如下:
5
好了,今天就分享到这里,目前智谱开放平台上架的智能体数量比较多,大家感兴趣,可以发挥自己的想象,基于现有智能体做一些垂直的工具,提高自己办公效率的同时,也可以分享出去,说不定还可以赚一些零花钱!!

