零基础入门AI大模型应用开发——第三天:使用python实现问答机器人

一、简介

问答机器人是一种能够理解用户提问并提供相关答案的程序。它可以用于各种场景,如客户支持、在线教育、信息检索等。用户通过自然语言输入问题,机器人则通过分析问题并检索相关信息来提供回答。

使用什么技术实现的?

  1. 自然语言处理(NLP)

    • 文本分析:使用库如 NLTK、spaCy 进行文本预处理和分析,提取关键词、句子结构等。
    • 意图识别:通过机器学习模型识别用户的意图,例如使用 TensorFlow 或 PyTorch 训练分类模型。
  2. 深度学习模型

    • 使用预训练模型,如 BERT、GPT 等进行文本生成和理解。可以利用 Hugging Face 的 Transformers 库来快速构建问答系统。
  3. API 调用

    • 利用 API 进行信息检索,比如调用外部知识库或搜索引擎获取答案。
  4. 数据库

    • 存储和管理问答数据,使用 SQLite、PostgreSQL 等数据库进行持久化存储。
  5. Web 框架

    • 使用 Flask 或 FastAPI 构建 Web 应用接口,使用户能够通过浏览器与机器人交互。

有什么意义?

  1. 提高效率

    • 自动化处理常见问题,减轻客服负担,提高响应速度和效率。
  2. 用户体验

    • 提供24/7服务,用户随时都能获取所需信息,提升客户满意度。
  3. 数据分析

    • 通过收集用户提问数据,分析用户需求和偏好,为业务决策提供支持。
  4. 个性化服务

    • 根据用户历史互动记录,提供个性化的回答和建议,提高用户粘性。
  5. 知识传播

    • 使知识更加可获取,尤其在教育和信息查询领域,帮助更多人获取所需知识。

二、对话机器人

import requests
import json# 发送 API 请求获取回复
url = "http://localhost:11434/api/generate"while True:# 从用户输入获取问题user_input = input("请输入你的问题(输入exit退出):")if user_input.lower() == 'exit':breakpayload = {"model": "llama3", "prompt": user_input+"请使用中文回答我"}response = requests.post(url, json=payload, stream=True)  # 确保使用 stream=True# 尝试解析流式 JSON 响应try:for line in response.iter_lines():if line:  # 确保行不为空try:response_json = json.loads(line.decode('utf-8'))if 'response' in response_json:print(response_json['response'], end='', flush=True)if 'done' in response_json and response_json['done']:print("\nStream ended.")breakexcept json.JSONDecodeError as e:print("\nJSON decode error:", e)continueexcept json.JSONDecodeError:print("Initial JSON decode error: potentially non-stream response")

 

如果不存储对话历史,机器人在每次对话时都无法参考之前的内容,这就导致了几个问题:

  1. 上下文丧失:用户的提问可能与之前的对话相关,如果没有记忆,机器人无法理解这些关系,可能会给出不相关或无意义的回答。

  2. 交互体验差:用户可能希望进行连续的对话,例如追问或深入探讨某个主题。如果机器人每次都重置,它无法维持自然的对话流,可能会让用户感到沮丧。

  3. 学习与适应能力缺失:如果机器人不能记住用户的偏好或之前的互动,它无法适应用户的需求。长期互动中,记忆可以帮助机器人提供更加个性化的体验。

  4. 对话的连贯性:记忆可以帮助建立更连贯的对话,用户可能会希望回顾之前的讨论或者更详细地询问某个主题,而没有记忆的机器人难以做到这一点。

为了改善用户体验,存储对话历史是一种有效的方式。这不仅使对话更具连贯性,还能让机器人在处理复杂问题时更为智能。如果需要,可以根据对话的主题和用户的偏好,灵活管理历史记录的大小和内容。通过这样的方式,机器人能够更好地理解用户的需求,并在互动中表现得更为人性化。

 

三、有记忆的对话机器人

import requests
import json# 发送 API 请求获取回复
url = "http://localhost:11434/api/generate"# 存储对话历史
conversation_history = []while True:# 从用户输入获取问题user_input = input("请输入你的问题(输入exit退出):")if user_input.lower() == 'exit':break# 将用户输入添加到对话历史conversation_history.append(f"用户: {user_input}")# 创建完整的提示,包括之前的对话历史full_prompt = "\n".join(conversation_history) + "\n助手: "payload = {"model": "llama3", "prompt": full_prompt + "请使用中文回答我"}response = requests.post(url, json=payload, stream=True)  # 确保使用 stream=True# 尝试解析流式 JSON 响应try:for line in response.iter_lines():if line:  # 确保行不为空try:response_json = json.loads(line.decode('utf-8'))if 'response' in response_json:print(response_json['response'], end='', flush=True)# 将助手的回复添加到对话历史conversation_history.append(f"助手: {response_json['response']}")if 'done' in response_json and response_json['done']:print("\nStream ended.")breakexcept json.JSONDecodeError as e:print("\nJSON decode error:", e)continueexcept json.JSONDecodeError:print("Initial JSON decode error: potentially non-stream response")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1544172.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

电源设计的艺术:从底层逻辑到工程实践

在电子工程的世界里,电源设计是核心中的核心。它不仅是电子设备的能量源泉,更是整个系统稳定运行的基石。随着科技的不断进步,电源设计的要求也越来越高,从效率、稳定性到体积、成本,每一个维度都是工程师们不断追求的…

Github 2024-09-21Rust开源项目日报 Top10

根据Github Trendings的统计,今日(2024-09-21统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目10Move项目1JavaScript项目1Deno: 现代JavaScript和TypeScript运行时 创建周期:2118 天开发语言:Rust, JavaScript协议类型:MIT Lic…

LSI SAS 9361-8i和SAS3008 12 gb / s PCIe 3.0 RAID 阵列卡配置

LSI SAS 9361-8i和SAS3008 12 gb / s PCIe 3.0 RAID 阵列卡配置 开机,BIOS自检,可以看到设备硬盘信息,以及提示CtrlR进入Raid卡配置界面。 按CtrlR进入Raid卡配置界面,一般来说使用CtrlR进入Raid卡配置界面的Raid卡配置都通用。 …

ant design vue实现表格序号递增展示~

1、代码实例 //current当前页数 //pageSize每页记录数 const columns [{title: 序号,width: 100,customRender: ({ index }) > ${index (current.value - 1) * pageSize.value 1},align: center,fixed: left,} ] 2、效果图

9.24今日错题解析(软考)

前言 这是用来记录我每天备考软考设计师的错题的,今天知识点为操作系统和数据结构,大部分错题摘自希赛中的题目,但相关解析是原创,有自己的思考,为了复习:),最后希望各位报考软考的…

【第十九章:Sentosa_DSML社区版-机器学习之模型评估】

目录 19.1 评估 19.2 混淆矩阵 19.3 ROC-AUC 19.4 时间序列模型评估 【第十九章:Sentosa_DSML社区版-机器学习之模型评估】 19.1 评估 1.算子介绍 评估算子(EvaluationNode) 用于评估用当前数据训练出来的模型的正确性,显示对模型各个评价指标的具…

从零预训练一个tiny-llama#Datawhale组队学习Task2

完整的教程请参考:datawhalechina/tiny-universe: 《大模型白盒子构建指南》:一个全手搓的Tiny-Universe (github.com) 这是Task2的学习任务 目录 Qwen-blog Tokenizer(分词器) Embedding(嵌入) RMS …

个人行政复议在线预约系统开发+ssm论文源码调试讲解

第二章 开发工具及关键技术介绍 2.1 JAVA技术 Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,JSP(java server pages…

武汉正向科技 格雷母线定位系统生产厂家

为了适应机车无人化项目对地址高精度的要求,我们推出了高精度格雷母线,根据地址的检测原理,地址精度取决于格雷母线最小交叉环的精度,传统的格雷母线内胆采用柔性泡沫内胆(图片1),格雷母线最小交…

末端无人配送产业链

末端无人配送产业链涵盖部件、系统、整车制造、运营服务、应用场景等五大环节。 四类企业竞逐末端配送,“科技公司物流企业”成最佳CP、平台公司蓄势待发

浏览器指纹修改指南2024 -了解SpeechVoice(四)

引言 随着互联网技术的飞速发展,用户隐私保护的重要性日益凸显。浏览器作为我们访问互联网的主要工具之一,其独特的指纹信息却成为了用户隐私的一大隐患。浏览器指纹技术利用浏览器的各种特性,如用户代理(User Agent)、字体列表、插件等,生成一个独一无二的识别码,使得用户即便…

详细分析SpringMvc中HandlerInterceptor拦截器的基本知识(附Demo)

目录 前言1. 基本知识2. Demo3. 实战解析 前言 对于Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新) 1. 基本知识 HandlerInter…

MFC - 复杂控件_2

前言 各位师傅大家好,我是qmx_07,今天讲解剩下的复杂控件知识点 IP地址栏 绘图准备: 调整windows窗口大小、设置 ip address control设置 Button按钮,修改名称 添加IP栏 变量:m_IP 获取IP栏内容 void CMFCApplication3Dlg::…

C++中的string模拟实现

上一章讲了库中的string函数&#xff0c;这次我们来讲一讲模拟实现 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<assert.h> using namespace std; //域名 namespace zzj {class String {public:typedef char* iterator;typedef const char* cons…

【Java 问题】基础——Java 概述

Java 概述 1. 什么是 Java ?2. Java 语言有哪些特点3. JVM、JDK 和 JRE 有什么区别&#xff1f;4. 说说什么是跨平台性&#xff1f;原理是什么&#xff1f;5. 什么是字节码&#xff1f;采用字节码的好处是什么&#xff1f;6. 为什么说 Java 语言 "编译与解释并存"?…

将 Go 作为脚本语言用及一些好用的包

前言 Go 作为一种可用于创建高性能网络和并发系统的编程语言&#xff0c;它的生态应用变得越来越广泛&#xff0c;同时&#xff0c;这也激发了开发人员使用 Go 作为脚本语言的兴趣。虽然目前 Go 还未准备好作为脚本语言 “开箱即用” 的特性&#xff0c;用来替代 Python 和 Ba…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【Perf调测】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 基本概念 Perf为性能分析工具&#xff0c;依赖PMU&#xff08;Per…

HTML讲解(三)通用部分

目录 1.空格标记 2.特殊文字的标记 3.注释语句 4.对文字字体的设置 5.修改文字形态 6.换行标记 7.居中标记 8.水平线标记 9.设置滚动弹幕 1.空格标记 在HTML中&#xff0c;我们想打印空格并不能直接敲一个空格键&#xff0c;因为如果是敲空格键&#xff0c;那无论你敲…

2万字长文超全详解!深度学习时代阴影检测、去除与生成在图像与视频中的全面综述

论文链接&#xff1a;https://arxiv.org/pdf/2409.02108 Github链接&#xff1a;https://github.com/xw-hu/Unveiling-Deep-Shadows 亮点直击 深度学习时代阴影分析的全面综述。本文对阴影分析进行了深入的综述&#xff0c;涵盖了任务、监督级别和学习范式等各个方面。本文的分…

SpringBoot整合ELK实现日志监控(保姆级教程)

新建SpringBoot项目 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…