0
点赞
收藏
分享

微信扫一扫

智谱新出的这几个Agent,真的太强了!!

点击“终码一生”,关注,置顶公众号

每日技术干货,第一时间送达!


1、背景

这段时间AI Agent平台Manus国内业务大裁员,闹得沸沸扬扬,作为率先发布通用Agent的科技公司,曾一码难求,一度被称赞为“全球首款通用智能体产品”的Manus,现在仿佛在通用智能体研发方向上遇到了技术瓶颈,各官方社交账号也相继清空内容,大有“跑路”之嫌。

而相对于通用智能体,垂直领域的智能体,能更高效、更精准的满足用户的需求,帮助我们提高工作效率、降低生产成本。目前国内众多头部科技公司,也竞相加入了这一领域。

智谱开放平台(bigmodel.cn)在这方面做的相当不错,基于自己的GLM系列大模型,推出了众多垂直领域的应用智能体,从语言翻译,内容生成,办公效能信息提取,智慧教育等。

智谱新出的这几个Agent,真的太强了!!_GLM

最近逛智谱开放平台(bigmodel.cn),看到平台又新上架了几个不错的Agent,包括通用翻译和招投标解析,票据识别等等,都是非常实用的,因为平时会浏览一些外部技术网站和文档,所以也是第一时间体验了下翻译智能体,体验完发现翻译的质量还是非常高的,相对于传统的翻译工具和软件,智能体翻译通过海量数据训练,可以更准确的翻译,同时让整个翻译达到了信达雅,不会那么生硬。

下面先简单分享下自己的体验:


2、在线体验

  • 在线体验:https://bigmodel.cn/trialcenter/agent?agentId=general_translation

1、对比传统翻译工具

先做一个简单的测试,将一首英文诗给某道和翻译智能体,看看效果:

智谱新出的这几个Agent,真的太强了!!_智谱开放平台_02

某道翻译

智谱新出的这几个Agent,真的太强了!!_智谱开放平台_03

翻译智能体

可以看到某道最后的翻译甚至出现语句不通顺的情况,而智能体的翻译明显要更有诗意,更加通顺,更加准确。这只是一个简单的诗句,如果是更长的文本内容,或者专业性更强的词汇,差距可能会更大。

2、支持上传文档翻译

翻译智能体不仅支持上传文档、图片等,还支持排版还原,翻译对比,文档内图片翻译等功能。我这里截图一张英文技术网站的图片,交给智能体翻译。

可以看到,文档翻译成功后,生成3个文件路径,一个源文件下载路径,一个翻译后的文档下载路径以及一个双语对比的文件下载。

智谱新出的这几个Agent,真的太强了!!_API_04

下载双语对比的文件,可以看到整个文档翻译后排版是还原的,这样我们在翻译一些PDF文件或者著作文件时,翻译的内容更多时,不至于出现排版错乱的问题,可以直接阅读,体验是非常好的。

智谱新出的这几个Agent,真的太强了!!_智谱开放平台_05

3、丰富的设置

相对于传统的翻译软件,智能体翻译更加强大,更加全面,而且翻译质量更高。从官方给出的说明,目前支持40多种语言,和多种翻译策略,同时支持上传术语表,并支持特殊语种翻译,像文言文,粤语等等。

智谱新出的这几个Agent,真的太强了!!_智谱开放平台_06

下面我们体验下文言文翻译,提交一首英语短诗:

智谱新出的这几个Agent,真的太强了!!_API_07

大家可以自己感受下,好了,更多个性化的翻译,这里不在演示,大家可以根据自己的喜好、需求去设置。

如果想要做一些定制化的产品开发,也可以通过调用官方的API,将翻译智能体集成到我们项目中,下面我们调用下官方API。


3、接口调用

  • 智谱开放平台:https://bigmodel.cn
  • 通用翻译Agent:https://bigmodel.cn/marketplace/agent_detail/general_translation
  • 开发文档:https://bigmodel.cn/dev/api/agent/general_translation


开发者首次调用,需要先去智谱开放平台注册并申请key,这里不再演示,小编基于Springboot开发,简单介绍下主要步骤,因为官方开发文档写的已经很详细了。

1、Maven主要配置

<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如果无法拉取,可以手动下载到本地并导入


2、调用代码

下面是部分主要调试代码,同步调用通用翻译API。

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";
    }

3、本地调用

本地调试,同步调用

智谱新出的这几个Agent,真的太强了!!_API_08

流式输出

智谱新出的这几个Agent,真的太强了!!_大模型_09


4、部署项目

为了方便使用,小编做了一个简单的聊天系统,调用了通用翻译API,同时支持选择不同的翻译策略,大家可以看下效果,如下:

智谱新出的这几个Agent,真的太强了!!_GLM_10

可以看到响应速度和翻译质量还是很高的,同时官方也有介绍,该通用翻译智能体还支持更多其他的设置,包括源语言和目标语言设置,还可以添加翻译策略,让翻译更加的精准,满足大家的不同需求。后续小编把功能完善之后,也会把代码开放给大家。


5、最后

好了,今天就分享到这里,目前智谱开放平台上架的智能体数量比较多,大家感兴趣,可以发挥自己的想象,基于现有智能体做一些垂直的工具,提高自己办公效率的同时,也可以分享出去,说不定还可以赚一些零花钱!!


直达应用主页体验:https://zhipuaishengchan.datasink.sensorsdata.cn/t/j7

举报

相关推荐

0 条评论