智能提醒助理系列-AIGC模型选型以及如何调用

        本系列文章记录“智能提醒助理”wx公众号 建设历程。

一、需求出发点

想在现有的 “智能提醒助理” 功能中增加 智能提醒,想法是 通过用户设置的定时提醒指令,再提醒的同时,根据指令生成内容,展示给用户。

产品设计入下图所示:

二、实现路径分析

该方案最关键的在于一个大模型的支持,目前市场上比较火热的大模型有:

豆包、月之暗面-kimi、智谱AI等。

可以选择 同一模型 不同版本进行体验,也可以 对比多家模型进行体验。

三、最终方案

主要考虑指标:

1、扩展性:可以平滑升级模型版本,享受最新模型能力。

2、费用:费用平稳,不要波动。

3、接入难度:开发难度。

4、响应速度:避免超时。

5、参数设置:可设置场景、输出字数等。

收费方式为 按照token数量收费,当前每个模型 有50万的免费额度。超过后收费。

综合考虑 选择了 豆包 Doubao-lite-32k

四、调用方式

通过token方式,使用http调用即可。

先上代码:

public class ModelUtil {

  public static String chat(String question) throws Exception {
// 申请地址:https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint/create?customModelId=
    String apiKey = "";

    String modelUrl = "https://ark.cn-beijing.volces.com/api/v3/chat/completions";

    String json = "{\"model\": \"ep-20240808195340-g8rct\",\"max_tokens\": 2000,\"messages\": [{\"role\": \"system\",\"content\": \"%s\"},{\"role\": \"user\",\"content\": \"%s\"}]}";

    log.info("请求大模型question:{}",question);
    String param = String.format(json, "你是AI助理小Z,是一个优秀的助理,知性,优雅,言简意赅。", "请简要的回答:"+question);

    HashMap<String,String> header = new HashMap<>();
    header.put("Content-Type", "application/json");
    header.put("Connection", "keep-alive");
    header.put("Authorization", "Bearer "+apiKey);

    String res = CreditHttpUtil.post(modelUrl,header,param);

// 返回结果示例
//    String res =  "{\"choices\":[{\"finish_reason\":\"stop\",\"index\":0,\"logprobs\":null,\"message\":{\"content\":\"我有很多功能,比如:\\n- **回答问题**:我可以回答各种问题,包括历史、科学、技术、文化、娱乐等方面的问题。\\n- **提供信息**:我可以提供各种信息,如新闻、天气预报、地图、航班信息等。\\n- **语言翻译**:我可以翻译多种语言,包括英语、法语、德语、西班牙语、中文等。\\n- **文本生成**:我可以生成文本,如文章、故事、诗歌等。\\n- **对话交流**:我可以与你进行对话,理解你的意图,提供相关的回答和建议。\\n\\n你可以通过输入文本与我进行交互,我会尽力理解你的需求并提供帮助。请问你需要我帮你做什么?\",\"role\":\"assistant\"}}],\"created\":1723127718,\"id\":\"0217231277163423d5a16fe195c821d80bfb0ac15cb4b72f19de4\",\"model\":\"doubao-lite-32k-240428\",\"object\":\"chat.completion\",\"usage\":{\"completion_tokens\":159,\"prompt_tokens\":22,\"total_tokens\":181}}";
    
    if(StringUtils.isNotEmpty(res)){
        // 提取返回结果
      res = res.replaceAll(".*\\{\"content\":\"(.*)\",\"role\":\"assistant\".*$", "$1");
         // 替换换行
        res = res.replaceAll("\\\\n", "\r\n");
    }
    log.info("字节大模型调用 返回结果===>{}", res);
    return res;
  }

}

单元测试:

 @Test
  public void testChat() throws Exception {
    long start = System.currentTimeMillis();
    String content = ModelUtil.chat("你有哪些功能?");
    log.debug("字节大模型调用 返回结果,耗时:{},===>{}", System.currentTimeMillis() - start,content);
    Thread.sleep(6000);

    long start1 = System.currentTimeMillis();
    String content1 = ModelUtil.chat("你今年多大?");
    log.debug("字节大模型调用 返回结果,耗时:{},===>{}", System.currentTimeMillis() - start1,content1);
    Thread.sleep(6000);

    long start2 = System.currentTimeMillis();
    String content2 = ModelUtil.chat("可以创建一个提醒吗?");
    log.debug("字节大模型调用 返回结果,耗时:{},===>{}", System.currentTimeMillis() - start2,content2);
    Thread.sleep(8000);
    long start3 = System.currentTimeMillis();
    String content3 = ModelUtil.chat("推进基本书?");
    log.debug("字节大模型调用 返回结果,耗时:{},===>{}", System.currentTimeMillis() - start3,content3);

  }

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值