视频课学习地址
www.coderutil.com/star/video/…
再第一集的视频课中,作者首先对aicase项目包作了介绍,同时带着大家完成aicase项目的基础环境配置,实现了项目本地能够正常运行起来。 紧接着七七带大家实现了 “顺丰快递寄件人信息智提取” 真实线上服务案例,带着大家初步了解了如何基于大模型开放api接口,将原本复杂的功能轻松实现,包括大模型 + Prompt工程完成业务系统功能开发的基础流程。
本期案例
“顺丰快递寄件人信息智能化提取“
从用户输入的一段没有任何规则和特征的寄件人姓名联系方式发货地纯文本信息中,提取出寄件人姓名、联系方式、寄件地址信息等实体信息,最终以结构化的JSON数据数据格式回显在前端页面表单。
大模型出现前
在大模型出现前,如果要实现这样一个功能,我们可能需要:
从纯文本中提取实体信息,如姓名、手机号、家庭地址等,通常涉及到自然语言处理(NLP)和信息抽取(Information Extraction)技术。
总而言之,非常复杂,实现成本也很高!!!
大模型出现后
我们可以将上述的整个过程抽象为一个黑盒子,但这个黑盒子是万能的,我能只需要通过自然语言交互的方式,告诉咱们的目的,不需要关注底层实现,就能的到想要的结果。
所以,有了模型后,我们只需要这样⬇️
那如果我们不需要关心黑盒子(大模型),那按照这个图示,我们其实只需要关注 prompt的编写,高质量prompt的编写
aicase技术实现
核心代码片段
String template = PromptTemplateEnum.SENDER_ADDRESS.getTemplate();
Map<String, Object> vars = new HashedMap();
vars.put("senderAddress", senderAddress);
try {
String prompt = freeMarkEngineService.getContentByTemplate(template, vars);
List<ChatCompletionMessage> messageList = new ArrayList<>();
messageList.add(new ChatCompletionMessage("user", prompt));
ChatCompletionResponse chatCompletionResponse = moonshotAIService.chat(messageList);
String response = chatCompletionResponse.getChoices().get(0).getMessage().getContent();
log.info("寄件人信息ai提取结果======>{} ", response);
return JsonUtil.fromJson(response, SenderInfoDTO.class);
} catch (Exception e) {
throw new RuntimeException(e);
}