通过纯文字引导DeepSeek编写一个简单的聊天机器人~

为进一步验证DeepSeek的代码能力 和 自然语言理解力,我花费了大约1个半小时的时间,和DeepSeek仅通过文字对话,编写出一个简单的聊天机器人。

以下是最终运行效果、生成代码、引导沟通过程示例:

一、最终运行效果

二、全部代码:

import re
from datetime import datetimedef calculate(expression):try:if re.match(r'^[\d\+\-\*/\.\s]+$', expression):result = eval(expression)return f"结果是: {result}"else:return "抱歉,我只能计算包含数字和加减乘除的表达式。"except Exception as e:return "抱歉,计算时出错了。请检查你的输入。"def extract_expression(text):match = re.search(r'[\d\.]+[\s]*[\+\-\*/][\s]*[\d\.]+([\s]*[\+\-\*/][\s]*[\d\.]+)*', text)return match.group(0).strip() if match else Nonedef get_time():return datetime.now().strftime('%H:%M:%S')def get_developer_info(question):# 开发者信息developers = {"deepseek": "主要负责编码工作","happybasic": "负责测试和反馈问题",}# 根据问题生成回复if "谁创造" in question or "谁开发" in question:return f"我是由 {', '.join(developers.keys())} 联合开发的,其中 deepseek {developers['deepseek']},而 happybasic {developers['happybasic']}。我们共同创造了一个简单的机器人模型。"elif "deepseek" in question:return f"deepseek {developers['deepseek']}。"elif "happybasic" in question:return f"happybasic {developers['happybasic']}。"else:return "抱歉,我不太明白你想了解哪位开发者的信息。"def simple_chatbot():print("你好!我是简单的聊天机器人。你可以和我聊聊天气、时间,或者让我帮你计算100以内的加减乘除混合运算。输入'退出'来结束对话。")# 关键词与回复的映射responses = {# 问候"你好": "你好!","嗨": "你好!",# 天气"天气": "今天的天气很好,阳光明媚。",# 时间"时间": f"现在的时间是 {get_time()}。","几点": f"现在的时间是 {get_time()}。",# 自我介绍"你叫什么名字": "我是一个简单的聊天机器人。",# 表扬和感谢"真棒": "谢谢你的夸奖!我很高兴能帮到你。","厉害": "谢谢你的夸奖!我很高兴能帮到你。","谢谢": "不客气!这是我的荣幸。","感谢": "不客气!这是我的荣幸。","聪明": "谢谢!我会继续努力的!",}last_intent = None  # 上一次的意图(如“计算”)while True:user_input = input("你: ").strip().lower()# 检查是否包含“退出”关键词if "退出" in user_input:print("机器人: 再见!")break# 处理开发者信息if "谁创造" in user_input or "谁开发" in user_input or "deepseek" in user_input or "happybasic" in user_input:print(f"机器人: {get_developer_info(user_input)}")last_intent = Nonecontinue# 处理表扬和感谢matched = Falsefor keyword, response in responses.items():if keyword in user_input:print(f"机器人: {response}")last_intent = Nonematched = Truebreakif not matched:# 处理计算请求is_calculation = any(word in user_input for word in ["计算", "算", "等于", "几"]) or last_intent == "计算"if is_calculation:expression = extract_expression(user_input)if expression:print(f"机器人: {calculate(expression)}")last_intent = "计算"else:print("机器人: 抱歉,我没有找到可以计算的表达式。")else:print("机器人: 抱歉,我不太明白你的意思。")last_intent = None# 运行聊天机器人
simple_chatbot()

三、 引导沟通过程示例

1. 首次开发需求沟通

2. 功能需求追加:

 

3. 测试bug反馈:

3.1 语言理解类:

3.2 计算BUG类:

* 注意: 实际测试过程中的bug远不止此,但是我均仅采用描述性语言将测试结果反馈给DeepSeek,它均能正确理解并有效修正。

 4.提出优化要求:

DeepSeek果然get到了重点,并且准确给出了优化策略。

5. 经过和DeepSeek沟通,DeepSeek同意将上述设计结果分享给CSDN网友,DeepSeek果然大方!~~~ 哈哈~~~

最后,说一句:DeepSeek真的很棒 ~~~ 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C/C++中new/delete与malloc/free的区别及对象管理

C/C++中new/delete与malloc/free的区别及对象管理 在C/C++编程中,动态内存管理是一个核心且复杂的话题,其中new、delete、malloc和free是四个经常用于此目的的工具。尽管它们都涉及到内存的分配和释放,但它们在处理对象时的方式和效果却大相径庭。本文将通过示例来说明这些工…

安卓入门十一 常用网络协议四

MQTT(Message Queuing Telemetry Transport) MQTT是一种轻量级的、发布/订阅模式的消息传输协议。它被设计用于在低带宽或不稳定网络环境下,实现物联网设备之间的可靠通信。 4.1 MQTT详细介绍 发布/订阅模式:MQTT 使用发布/订…

ansible-Ad-hoc命令行模式

一. 简述: ansible的ad-hoc是一个概念性的名字,是相对于ansible playbook而言。类似于:通过命令行来执行一些简单的,一次性的playbook任务(通俗点就是通过命令行执行一些简单的,而又不需要将命令特殊保存起来的任务)。Ansible提供…

React 如何进行路由变化监听

一、使用react-router库(以react-router-dom为例) 1. 历史(history)对象监听 1.1 原理 react-router内部使用history对象来管理路由历史记录。可以通过访问history对象来监听路由变化。在基于类的组件中,可以通过组…

UE5AI感知组件

官方解释: AI感知系统为Pawn提供了一种从环境中接收数据的方式,例如噪音的来源、AI是否遭到破坏、或AI是否看到了什么。 AI感知组件(AIPerception Component)是用于实现游戏中的非玩家角色(NPC)对环境和其…

[SAP ABAP] SMARTFORMS表单开发

使用事务码SMARTFORMS进入到SMARTFORMS开发界面进行表单开发 SMARTFORMS表单开发相关资料 [SMARTFORMS] 创建样式模板https://blog.csdn.net/Hudas/article/details/144946341?spm1001.2014.3001.5501[SMARTFORMS] 创建FORMhttps://blog.csdn.net/Hudas/article/details/144…

倍思氮化镓充电器分享:Super GaN伸缩线快充35W

快节奏的时代,在旅游、办公等场景下,一款高效、便捷的充电器可以让我们的生活更便捷、高效。今天就给大家推荐一款倍思氮化镓充电器——Super GaN伸缩线快充35W。它具备多重亮点,可以满足我们在许多场景下的充电需求,成为我们的得力助手。 倍思氮化镓Super GaN伸缩线快充35W的亮…

声音是如何产生的

一、音频概述 RTMP中一般音频采用aac编码,采样率为44100HZ, 每帧1024采样,帧率43,23.2ms一帧 RTC中一般音频采用opus编码,采样率为48000HZ,每帧480采样,帧率100,10ms一帧 通道数(c…

xr-frame 通过shader去除视频背景色,加载透明视频

目录 前言 实现思路 获取 XR 框架系统: 注册自定义效果 创建效果对象 渲染通道配置 着色器代码 顶点着色器 片元着色器(颜色分量g达到条件的片元将被透透明) effect-removeBlack 完整代码 wxml中使用 前言 实现了一个用于注册自定…

CSS——7.CSS注释

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>css注释</title><link rel"stylesheet" type"text/css" href"a.css"/></head><body><!--头部开始&#xff08;h…

电子信息硕士面试经验

回顾2024年秋招一些面试常见的问题,主要涉及软件开发和嵌入式部分内容。 1. 浅拷贝深拷贝 深拷贝和浅拷贝是两种不同的拷贝方式,用于复制对象。它们主要区别在于对嵌套对象的处理方式。 浅拷贝:只复制对象的顶层,嵌套对象仍然是共享引用。 深拷贝:递归复制所有对象及其嵌…

fnm教程

常用命令 // 查看所有远程可供安装的 Node 版本 fnm list-remote// 安装某一 Node 版本 fnm install <version>// 切换某一 Node 版本 fnm use <version>// 查看当前使用的 Node 版本 fnm current// 查看所有已安装的 Node 版本 fnm list// 删除某一 Node 版本 fn…

物体切割效果

1、物体切割效果是什么 在游戏开发中&#xff0c;物体切割效果就是物体看似被切割、分割或隐藏一部分的视觉效果。 这种效果常用与游戏和动画中&#xff0c;比如角色攻击时的切割效果&#xff0c;场景中的墙壁切割效果等等。 2、物体切割效果的基本原理 在片元着色器中判断片…

GTX750Ti打DP补丁

背景 咸鱼收了一个二手的GTX750Ti,用于4K60Hz显示器,HDMI接口勉强可以4K60Hz,不过色彩和帧率都不是太正常,理论上它的HDMI接口是不支持的,原本也是打算用DP接口接显示器的,但是发现接DP口之后无法通过bios的vga检测最终一直重启,在华硕B760-K的BIOS中使能CSM是可以使用…

接口测试Day06-UnitTest框架

UnitTest 是开发人员用来实现 “单元测试” 的框架。测试工程师&#xff0c;可以在自动化 “测试执行” 时使用。 使用 UnitTest 的好处&#xff1a; 方便管理、维护测试用例。提供丰富的断言方法。生成测试报告。&#xff08;需要插件 HTMLTestReport&#xff09; UnitTest框架…

《learn_the_architecture_-_trustzone_for_aarch64_102418_0101_03_en》学习笔记

1.TrustZone是Arm A-profile架构中安全架构的名称。TrustZone首次在Armv6K中引入&#xff0c;Armv7-A和Armv8-A也支持。TrustZone提供两个执行环境&#xff0c;它们之间具有系统范围的硬件强制隔离。在Arm架构中&#xff0c;有两种安全状态&#xff1a;安全和非安全。在EL0、EL…

人工智能-Python网络编程-TCP

1 TCP-概念版 服务端 import socket ​ # 1 创建服务端套接字对象 # socket.AF_INET IPV4 # socket.SOCK_STREAM TCP # socket.SOCK_DGRAM UDP tcp_server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) ​ # 2 绑定端口号 tcp_server_socket.bind((192.…

小程序组件 —— 28 组件案例 - 推荐商品区域 - 实现结构样式

这一节目标是实现底部推荐商品的结构和样式&#xff0c;由于这里要求横向滚动&#xff0c;所以需要使用上节介绍的 scroll-view 功能&#xff0c;并使用 scroll-x 属性支持横向滚动&#xff0c;推荐商品区域中的每一个商品是一个单独的 view&#xff0c;每个view 中需要写三个组…

【Spring Boot】Spring AOP 快速上手指南:开启面向切面编程新旅程

前言 &#x1f31f;&#x1f31f;本期讲解关于spring aop的入门介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不…

集合划分.

本节通过解决集合划分的问题进行一个递归算法的简单实现. 问题描述: 给定正整数n和m,计算出n个元素的集合{1,2,3....}可以划分为多少个不同的有m个非空子集组成的集合. 思路解析: 解读题目,将由n个元素组成的集合拆分成m个非空子集,假设函数名为f.若想将n个元素分成m组,就需要…