Sprint Boot接入阿里通义千问

Laughing
2024-07-06 / 0 评论 / 1,064 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年07月06日,已超过195天没有更新,若内容或图片失效,请留言反馈。

tongyiqianwenTongyi-Qianwen

阿里通义千问是阿里巴巴推出的大规模语言模型,由达摩院研发。它是基于先进的自然语言处理技术构建的,旨在提供高质量的文本生成和理解能力。通义千问的特点包括:

  1. 多语言支持:通义千问能够理解和生成多种语言的文本,包括但不限于中文、英文、日文、法文、西班牙文和德文等,这使得它具有全球化的交流能力。
  2. 训练数据丰富:它的训练数据来自阿里巴巴内部的大量语言和文本资源,涵盖了文学、历史、科学、艺术等各种主题,旨在提供广泛的知识基础。
  3. 应用场景广泛:通义千问不仅可以用于日常对话和信息查询,还可以为企业和个人用户提供定制化服务,如行业咨询、文档撰写、智能助手等,帮助用户生成内容或解答问题。
  4. 与阿里巴巴产品整合:2023年4月,阿里巴巴宣布其所有产品将接入通义千问,这意味着用户可以在钉钉、天猫精灵等平台上直接体验到该模型的服务,企业也可以利用阿里云的能力来定制自己的行业专属大模型。
  5. 合规性:2023年9月13日,通义千问通过了相关备案并正式对公众开放,表明其在遵守法律法规的前提下提供服务。
  6. 商业价值:张勇(阿里巴巴集团董事会主席兼CEO)强调了通义千问对于提升阿里巴巴产品和服务的智能化水平,以及帮助企业利用人工智能进行创新。

如果你是基于Python或Java开发,那么通义千问支持的SDK还是比较完善的,本文已Spring Boot接入阿里通义千问为例进行说明。

壹、申请Key

进入阿里云官网,定位到【API-KEY管理】,如果已经有Key的话,可以直接使用,如果没有可以创建一个新的。

image-20240706144641503

贰、创建Spring Boot工程

具体怎么创建工程就不过多介绍了,现在主要说说创建完之后的配置及开发工作。

2.1、添加依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dashscope-sdk-java</artifactId>
    <version>2.14.0</version>
</dependency>

2.2、修改配置文件

在配置文件application.yml中添加我们申请到的Key

注意替换成你实际的key

qwen:
  ai-api-key: sk-XXXX

2.3、创建配置文件,读取配置信息

@Component
@ConfigurationProperties(prefix = "qwen")
@Data
public class QWenConfig {

    private String aiApiKey;

}

2.4、创建通义千问的配置文件

@Configuration
public class AliQWenConfig {

    @Bean
    public Generation generation() {
        return new Generation();
    }

}

2.5、创建请求

@RestController
@RequestMapping("ai")
public class QWenController {

    @Resource
    private Generation generation;

    @Resource
    private QWenConfig qWenConfig;


    /**
     * 测试demo
     *
     * @param content 用书输入文本内容
     */
    @PostMapping(value = "qwen")
    public String send(@RequestBody String content) throws NoApiKeyException, InputRequiredException {
        //用户与模型的对话历史。list中的每个元素形式为{“role”:角色, “content”: 内容}。
        Message userMessage = Message.builder()
                .role(Role.USER.getValue())
                .content(content)
                .build();

        GenerationParam param = GenerationParam.builder()
                //指定用于对话的通义千问模型名
                .model("qwen-turbo")
                .messages(Collections.singletonList(userMessage))
                //
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                //生成过程中核采样方法概率阈值,例如,取值为0.8时,仅保留概率加起来大于等于0.8的最可能token的最小集合作为候选集。
                // 取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的确定性越高。
                .topP(0.8)
                //阿里云控制台DASHSCOPE获取的api-key
                .apiKey(qWenConfig.getAiApiKey())
                //启用互联网搜索,模型会将搜索结果作为文本生成过程中的参考信息,但模型会基于其内部逻辑“自行判断”是否使用互联网搜索结果。
                .enableSearch(true)
                .build();
        GenerationResult generationResult = generation.call(param);
        return generationResult.getOutput().getChoices().get(0).getMessage().getContent();
    }

}

叁、测试

使用ApiFox测试一下

image-20240706145620150

0

评论 (0)

取消