【chatbot-api开源项目】开发文档

2024-06-17 06:12

本文主要是介绍【chatbot-api开源项目】开发文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

chatbot-api

  • 1. 需求分析
    • 1-1. 需求分析
    • 1-2. 系统流程图
  • 2. 技术选型
  • 3. 项目开发
    • 3-1. 项目初始化
    • 3-2. 爬取接口
      • 获取问题接口
      • 回答问题接口
      • 创建对应对象
    • 3-3. 调用AI
    • 3-4. 定时自动化回答
  • 4. Docker部署
  • 5. 扩展
    • 5-1. 如果cookie失效了怎么处理
    • 5-2. 如何更好的对接多个回答系统

Gitee: https://gitee.com/xingyiteng/chatbot-api

1. 需求分析

1-1. 需求分析

  • 调用 AI大模型 自动回答用户的问题。
  • 例如百度知道知乎等用户提问网站。
  • 生活常识情感爱情等问题可以通过 AI大模型 完成回答,从而提升账号等级、赚取积分兑换奖品。

1-2. 系统流程图

在这里插入图片描述

2. 技术选型

  1. SpringBoot
  2. SparkAI
  3. Httpclient
  4. Docker

3. 项目开发

3-1. 项目初始化

  1. 初始化SpringBoot
    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.49</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency></dependencies><build><finalName>chatbot-api</finalName><resources><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>**/**</include></includes></resource></resources><testResources><testResource><directory>src/test/resources</directory><filtering>true</filtering><includes><include>**/**</include></includes></testResource></testResources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.12.4</version><configuration><skipTests>true</skipTests></configuration></plugin><plugin><!--该插件主要用途:构建可执行的JAR --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build>
  1. 创建Gitee仓库

3-2. 爬取接口

获取问题接口

请求地址: https://zhidao.baidu.com/ihome/api/push

请求方式: post

请求参数:

  • pn: 0
  • rn: 20
  • type: newRecommend
  • keyInTag: 1
  • filter:
  • t: 1718528885806
  • tags: 爱情经营 爱情 感情危机 感情
  • isMavin: 0
  • vcode_str:
  • vcode:
  • isAll: 1
  • isExpGroup: 1

请求头:

  • Cookie:xxx
  • Content-Type:application/x-www-form-urlencoded; charset=UTF-8
  • User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36

回答问题接口

请求地址: https://zhidao.baidu.com/submit/ajax/

请求方式: post

请求参数:

  • cm: 100009
  • qid: 1616616039139483827
  • title:
  • answerfr:
  • feedback: 0
  • entry: uhome_search_recommend
  • co: 不要过多的顾虑什么,遇到合适的就可以。
  • cite:
  • rich: 1
  • edit: new
  • utdata: 37,0,58,37,59,37,58,37,59,37,58,37,59,37,58,37,59,37,58,37,59,0,60,58,49,57,49,0,56,48,59,57,37,56,57,49,57,17185315609091
  • stoken: 450fdee432f9e1cdad58f99dd1321e0a

请求头:

  • Cookie:xxx
  • Content-Type:application/x-www-form-urlencoded; charset=UTF-8
  • User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36

创建对应对象

  • 根据接口的返回JSON格式,转换成对应的对象
  • 转换网站:http://www.esjson.com/jsontopojo.html

3-3. 调用AI

  • 调用星火Spark模型
  • https://github.com/briqt/xunfei-spark4j

3-4. 定时自动化回答

  • 设置随机打烊,防止风控
@Scheduled(fixedDelay = 5000)public void run(){try {if (new Random().nextBoolean()) {logger.info("\n随机打烊中...");return;}// 获取问题List<QidAndQuestion> list = zhidao.queryQuestions();if (list.isEmpty()) {logger.info("\n本次未检索到问题...");return;}// 遍历问题for (QidAndQuestion qidAndQuestion : list) {String qid = qidAndQuestion.getqId();String question = qidAndQuestion.getQuestion();// 调用模型String answer = yuModelAI.doChat(question);// 回答问题boolean status = zhidao.answer(qid, answer);logger.info("\nqId: {}\n问题: {}\n回答: {}\n回答状态: {}", qid, question, answer, status);// 生成一个3到7秒之间的随机数(毫秒)int randomSleepTime = ThreadLocalRandom.current().nextInt(3000, 7001);logger.info("\nAI随机休息:{}s", randomSleepTime / 1000);Thread.sleep(randomSleepTime);}} catch (InterruptedException e) {logger.error("自动回答异常", e);}
}

4. Docker部署

视频:https://www.bilibili.com/video/BV13L411C7FU/

# 基础镜像
FROM openjdk:8-jre-slim# 设置环境变量TZ
ENV TZ=Asia/Shanghai# 配置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 添加应用
ADD /target/chatbot-api.jar /chatbot-api.jarCMD ["java", "-jar", "chatbot-api.jar"]EXPOSE 8090

5. 扩展

5-1. 如果cookie失效了怎么处理

5-2. 如何更好的对接多个回答系统

这篇关于【chatbot-api开源项目】开发文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1068670

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提