基于Springboot+微信小程序调用文心一言大模型实现AI聊天

一、文章前言

此文主要实现基于Springboot+微信小程序调用文心一言大模型实现AI聊天对话功能,使用Java作为后端语言进行支持,界面友好,开发简单。

二、开发流程及工具准备

2.1、登录百度智能云平台,获取 API Key 和 Secret Key两个凭证
2.2、注册微信公众平台账号。
2.3、下载安装IntelliJ IDEA(后端语言开发工具),Mysql数据库,微信Web开发者工具。

三、开发步骤

1.创建maven project

先创建一个名为SpringBootDemo的项目,选择【New Project】
在这里插入图片描述

然后在弹出的下图窗口中,选择左侧菜单的【New Project】(注:和2022之前的idea版本不同,这里左侧没有【Maven】选项,不要选【Maven Archetype】!!!),输入Name(项目名):SpringBootDemo,language选择【java】,build system选择【maven】,然后选择jdk,我这里选的是jdk18.

在这里插入图片描述然后点击【Create】
在这里插入图片描述

2.在project下创建module

点击右键选择【new】—【Module…】
在这里插入图片描述
左侧选择【Spring initializr】,通过idea中集成的Spring initializr工具进行spring boot项目的快速创建。窗口右侧:name可根据自己喜好设置,group和artifact和上面一样的规则,其他选项保持默认值即可,【next】
在这里插入图片描述

Developer Tools模块勾选【Spring Boot DevTools】,web模块勾选【Spring Web】

在这里插入图片描述

此时,一个Springboot项目已经搭建完成,可开发后续功能

3.编写一个消息实体类、Mapper、service(三层架构)

@Data
public class Chat {
   

    @TableId(type = IdType.AUTO)
    private Long id;

    private Long userId;

    private Long targetUserId;

    private LocalDateTime createTime;

    private String userName;

    private String targetUserName;

    private String content;

}

由于我们使用mybatis-plus,所以简单的增删改查不用自己写,框架自带了,只需要实现或者继承他的Mapper、Service
在这里插入图片描述在这里插入图片描述

4.编写调用ai服务类

//获取AccessKey
public static String GetAccessToken()
{
   
   
    // 发送 POST 请求
    String response = HttpUtil.post(url, params);
    JSONObject json=JSONObject.parseObject(response);
    return json.getString("access_token");
}




5.创建控制器Controller

先创建Controller Package
在这里插入图片描述

创建一个Controller
在这里插入图片描述
输入类名,选在【Class】
在这里插入图片描述

因为要编写Rest风格的Api,要在Controller上标注@RestController注解

6.创建具体的Api接口



@RestController
public class DemoController {
   


    @RequestMapping
### 将文心一言集成到微信小程序中的方法 要将百度的文心一言集成到微信小程序中,可以通过 Langchain 提供的相关工具和接口实现多轮对话功能,并结合微信小程序的开发框架完成整体接入。以下是具体的实现方式和技术细节: #### 1. **准备工作** 在开始之前,需要准备以下内容: - 获取文心一言的 `APP_KEY` 和 `SECRET_KEY`,用于身份验证。 - 安装必要的 Python 库,例如 `langchain-wenxin`。 安装依赖库的方法如下: ```bash pip install langchain-wenxin ``` #### 2. **配置 Langchain 多轮对话环境** 通过 Langchain 的 `ConversationBufferMemory` 实现多轮对话记忆功能。以下是基于 Langchain 的代码示例[^5]: ```python from langchain.chains import LLMChain from langchain.memory import ConversationBufferMemory from langchain.prompts import PromptTemplate from langchain_wenxin.chat_models import ChatWenxin # 替换为你自己的 APP_KEY 和 SECRET_KEY WENXIN_APP_Key = "你的KEY" WENXIN_APP_SECRET = "你的SECRET" # 初始化 ChatWenxin 对象 chat = ChatWenxin( temperature=0.9, model="ernie-bot-turbo", baidu_api_key=WENXIN_APP_Key, baidu_secret_key=WENXIN_APP_SECRET, verbose=True, ) # 定义 Prompt Template template = """ You are a chatbot having a conversation with a human. Please answer as briefly as possible. {chat_history} Human: {human_input} Chatbot:""" prompt = PromptTemplate(input_variables=["chat_history", "human_input"], template=template) # 使用 ConversationBufferMemory 来保存聊天历史记录 memory = ConversationBufferMemory(memory_key="chat_history") # 创建 LLMChain 并绑定内存对象 llm_chain = LLMChain(llm=chat, prompt=prompt, verbose=False, memory=memory) # 测试运行 res = llm_chain.run(human_input="你好!") print(res) ``` 这段代码实现了基本的多轮对话逻辑,能够记住之前的对话内容并生成连贯的回答。 #### 3. **微信小程序端的对接** 为了将上述后端逻辑嵌入到微信小程序中,需遵循以下步骤: ##### (1) **设置小程序启动参数** 根据引用[^4]的内容,在小程序初始化阶段可通过扩展字段传递上下文数据给 H5 页面。例如: - 设置 `data` 参数以携带用户 ID 或其他必要信息。 - 利用 `jsbridge` 接口调用后端服务。 示例代码片段: ```javascript // app.js App({ onLaunch(options) { const sourceKey = options.sourcekey || 'default'; const type = options.type || '0'; wx.setStorageSync('sourceKey', sourceKey); console.log(`Source Key is ${sourceKey}, Type is ${type}`); } }); ``` ##### (2) **前端请求设计** 在微信小程序中发起 HTTP 请求至部署好的后端服务器(即运行 Langchain 脚本的服务),并将用户输入发送过去。响应结果可以直接渲染到界面上。 示例代码: ```javascript Page({ data: { messages: [] }, sendMessage(e) { const userInput = e.detail.value; if (!userInput.trim()) return; this.setData({ messages: [...this.data.messages, { role: 'user', content: userInput }] }); wx.request({ url: 'https://your-backend-server.com/chat', method: 'POST', header: { 'Content-Type': 'application/json' }, data: JSON.stringify({ message: userInput }), success: (res) => { const botResponse = res.data.response; this.setData({ messages: [...this.data.messages, { role: 'assistant', content: botResponse }] }); } }); } }); ``` ##### (3) **界面布局优化** 参考引用[^2]的设计思路,可以在右侧面板增加一个聊天窗口模块,支持实时交互。顶部可以放置一些推荐内容或广告位;底部则是输入框和发送按钮。 --- ### 技术注意事项 - 确保后端服务的安全性和稳定性,建议启用 HTTPS 协议保护通信过程。 - 如果涉及多媒体文件(如图像或视频)处理,可参照 OpenAI 的视觉功能文档[^3]进行适配。 - 微信小程序内的网络请求受限于域名白名单,请提前配置好合法访问地址。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无语小咪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值