【AIAppMarket项目】第四阶段-市场平台的智能化

本阶段任务

借助 智谱AI,为市场平台提供智能化生成App的功能。

  • 接入 Al 模块
  • Al 生成题目
  • Al 智能评分

接入 AI 模块

根据 智谱 AI 接口文档 使用 SDK 的方式接入(这种方式比较简便,不用自己构造 HTTP 请求和响应对象)。

  1. 在添加依赖后,使用 @SpringBootTest 注解进行了单元测试,验证正确接入 AI 模块:
@SpringBootTest
public class ZhiPuAiTest {

    @Resource
    private ClientV4 clientV4;

    @Test
    public void test(){
        // 初始化客户端
//        ClientV4 client = new ClientV4.Builder(KeyConstant.KEY).build();
        // 构建请求
        List<ChatMessage> messages = new ArrayList<>();
        ChatMessage chatMessage = new ChatMessage(ChatMessageRole.USER.value(), "作为一名营销专家,请为智谱开放平台创作一个吸引人的slogan");
        messages.add(chatMessage);
//        String requestId = String.format(requestIdTemplate, System.currentTimeMillis());

        ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
                .model(Constants.ModelChatGLM4)
                .stream(Boolean.FALSE)
                .invokeMethod(Constants.invokeMethod)
                .messages(messages)
//                .requestId(requestId)
                .build();
        ModelApiResponse invokeModelApiResp = clientV4.invokeModelApi(chatCompletionRequest);
        System.out.println("model output:" + invokeModelApiResp.getData().getChoices().get(0));

    }
}
  1. 测试正确之后,封装模块:

1)在 application.yml 中定义配置:

ai:
  api-key: 自己的API密钥

2)定义 AI 配置类:

@Configuration
@ConfigurationProperties(prefix = "ai")
@Data
public class AiConfig {
    /**
     * api key,需要从开放平台获取
     */
    private String apiKey;

    @Bean
    public ClientV4 getClientV4(){
        return new ClientV4.Builder(apiKey).build();
    }
}

3)在 AiManager 类中定义各类请求方法

AI 生成题目

可以使用 Al 根据已经填写的应用信息,自动生成题目,然后再由人工进行编辑确认,提高创建题目的效率。
Al 生成内容精准的核心要点在于编写 Prompt。总体而言,首先明确我们能提供或者需要输入给Al的参数,然后构建 Prompt 并输入给 AI,让 AI 生成题目并处理成我们需要的格式。
1)调试定义 Prompt:智谱AI-Prompt 工程文档
遵循 Prompt 工程指南中的技巧,编写出系统 Prompt 和用户 Prompt 。
系统Prompt如下:

你是一位严谨的出题专家,我会给你如下信息:
应用名称,
[[[应用描述]]],
应用类别,
要生成的题目数,
每个题目的选项数
请你根据上述信息,按照以下步骤来出题:
xxxxxxxxxxxxxxxxx
xxxxxxxxxxx

用户Prompt按照顺序提供信息即可,示例Prompt如下:

测评类应用:
MBTI性格测试,
[[[MBTI性格测试]]],
测评类,
10,
2

注意:得到的结果可能会包含额外的开头和结尾字符串。可以通过字符串查找,找到开头和结尾的[ ],进行截取,最后,将JSON字符串转换为题目对象,返回给前端即可。

2)定义 AI 生成题目请求类,和系统/用户消息模板,并在QuestionController中定义 AI 题目生成接口。

3)前端开发:
使用 acro design 中提供的抽屉组件,并在题目页面中引入

并引入 const submitting 来向用户提示题目正在生成中

AI 评分

原本我们设计的题目评分策略需要让应用创建者自己创建评分结果,并且给题目选项设置得分和对应的属性,比较麻烦:
在这里插入图片描述
因此可以使用 Al根据应用信息题目和用户的答案进行分析,直接返回评分结果。
基本开发步骤同 AI 生成题目类似。
这种评分策略更适用于测评类应用,提高创建应用效率的同时,给结果更多的可能性,所以下面我们主要实现测评类应用的Al评分策略,暂时不关注得分类应用的Al评分结果,后续也可以在前端做一些控制,如果是得分类应用,不支持选择AI评分策略等。

扩展知识

Spring AI 用于在 Spring 应用程序中集成人工智能(AI)和机器学习(ML)功能。Spring AI 旨在简化 AI/ML 模型的开发、部署和管理,使开发人员能够更加高效地构建智能应用程序。
简单来说就是适配了市面上主流的Al模型,提供统一接口便于我们的开发
注意:整个Spring Al是基于jdk 17构建的。
此外,Spring AI也整合了智谱AI:github地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值