【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

相关文章

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实