千帆模型gpt智能聊天机器人

首先是调用接口,需要调用的接口ACCESS_KEY和SECRET_KEY

# coding=utf-8
import os
import qianfandef gpt(question):with open("QIANFAN_ACCESS_KEY",'r',encoding='utf-8') as f:QIANFAN_ACCESS_KEY = f.read()with open("QIANFAN_SECRET_KEY","r",encoding="utf-8") as f:QIANFAN_SECRET_KEY = f.read()os.environ["QIANFAN_ACCESS_KEY"] = QIANFAN_ACCESS_KEY  # 公钥os.environ["QIANFAN_SECRET_KEY"] = QIANFAN_SECRET_KEY  # 私钥chat_robot = qianfan.ChatCompletion()resp = chat_robot.do(messages=[{"role":"user","content":question}])return resp.body['result']print(gpt('你好'))

然后客户端.py

import wx
from socket import *
import threading
from faker import Fakerclass Client(wx.Frame):# 构造方法def __init__(self):# 实例属性self.name =  Faker('zh_CN').name() # 客户端的名字self.isConnected = False  # 客户端是否连接服务器self.client_socket = None# 界面布局wx.Frame.__init__(self,None,title=self.name+"智能问答聊天室客户端",size=(450,660),pos=(100,50))# 创建面板self.pl = wx.Panel(self)# 创建按钮# 加入聊天室self.conn_btn = wx.Button(self.pl,label="加入聊天室",pos=(10,10),size=(200,40))# 离开聊天室self.dis_conn_btn = wx.Button(self.pl, label="离开聊天室", pos=(220, 10), size=(200, 40))# 清空按钮self.clear_btn = wx.Button(self.pl, label="清空", pos=(10, 580), size=(200, 40))# 发送按钮self.send_btn = wx.Button(self.pl, label="发送", pos=(220, 580), size=(200, 40))# 创建聊天内容文本框self.text = wx.TextCtrl(self.pl,size=(400,400),pos=(10,60),style=wx.TE_READONLY|wx.TE_MULTILINE)# 创建输入文本框self.input_text = wx.TextCtrl(self.pl,size=(400,100),pos=(10,470),style=wx.TE_MULTILINE)# 按钮的事件绑定self.Bind(wx.EVT_BUTTON,self.clear,self.clear_btn)self.Bind(wx.EVT_BUTTON, self.conn, self.conn_btn)self.Bind(wx.EVT_BUTTON, self.dis_conn, self.dis_conn_btn)self.Bind(wx.EVT_BUTTON, self.send, self.send_btn)# 点击 加入聊天室 按钮 触发def conn(self,event):print('conn方法')if self.isConnected==False:self.isConnected=Trueself.client_socket=socket()self.client_socket.connect(('127.0.0.1',8998))# 发送用户名self.client_socket.send(self.name.encode('utf8'))main_thread = threading.Thread(target=self.recv_data)main_thread.daemon=Truemain_thread.start()def recv_data(self):print(22222222222)while self.isConnected:print(111111111)text = self.client_socket.recv(1024).decode('utf8')print(text)self.text.AppendText(text+'\n')# 点击 离开聊天室 按钮 触发def dis_conn(self,event):print('dis_conn方法')self.client_socket.send('断开连接'.encode('utf8'))self.isConnected=False# 点击 清空 按钮 触发def clear(self, event):print('clear方法')self.input_text.Clear()# 点击 发送 按钮 触发def send(self, event):print('send方法')if self.isConnected:text = self.input_text.GetValue()if text !='':self.client_socket.send(text.encode('utf8'))self.input_text.Clear()# 程序入口
if __name__ =='__main__':# 创建应用程序对象app = wx.App()# 创建客户端窗口client = Client()# 显示客户端窗口client.Show()# 一直循环显示app.MainLoop()

最后是服务器.py

import wx
from socket import *
import  threading
from concurrent.futures import ThreadPoolExecutor
from 千帆模型 import gptclass Server(wx.Frame):def __init__(self):# 实例属性self.isOn = False  # 服务器的启动状态# 创建socket对象self.server_socket = socket()# 绑定ip和端口号self.server_socket.bind(('0.0.0.0',8998))# 监听self.server_socket.listen(5)# 保存所有的客户端self.client_thread_dict={}# 创建线程池self.pool = ThreadPoolExecutor(max_workers=10)# 界面布局# 调用父类的init方法wx.Frame.__init__(self,None,title='智能问答聊天室',pos=(0,50),size=(450,600))# 创建面板self.pl = wx.Panel(self)# 创建按钮# 启动服务器self.start_server_btn = wx.Button(self.pl,pos=(10,10),size=(200,40),label='启动服务器')# 保存聊天记录self.save_text_btn = wx.Button(self.pl, pos=(220, 10), size=(200, 40), label='保存聊天记录')# 创建聊天内容文本框self.text = wx.TextCtrl(self.pl, size=(400, 400), pos=(10, 60), style=wx.TE_READONLY | wx.TE_MULTILINE)# 给按钮绑定事件self.Bind(wx.EVT_BUTTON,self.start_server,self.start_server_btn)self.Bind(wx.EVT_BUTTON, self.save_text, self.save_text_btn)# 启动服务器def start_server(self,event):print('start server')if self.isOn==False:self.isOn=True# 创建线程main_thread = threading.Thread(target=self.main_thread_fun)# 设置为守护线程main_thread.daemon = True# 启动线程main_thread.start()def main_thread_fun(self):while self.isOn:client_socket,client_addr=self.server_socket.accept()print(client_addr)client_name = client_socket.recv(1024).decode('utf8')print(client_name)client_thread = ClientThead(client_socket,client_name,self)# 保存客户端self.client_thread_dict[client_name] = client_threadself.pool.submit(client_thread.run)# self.send("【服务器通知】欢迎%s进入聊天室"%client_name)def send(self,text):self.text.AppendText(text+'\n')for client in self.client_thread_dict.values():if client.isOn:print(text)result = gpt(text)print(result)client.client_socket.send(result.encode('utf8'))self.text.AppendText(result + '\n')# 保存聊天记录def save_text(self,event):print('save text')record = self.text.GetValue()with open('record.log',"a+",encoding='GBK') as f:f.write(record)class ClientThead(threading.Thread):def __init__(self,socket,name,server):threading.Thread.__init__(self)self.client_socket = socketself.client_name = nameself.server = serverself.isOn = Truedef run(self):while self.isOn:text = self.client_socket.recv(1024).decode('utf8')if text =='断开连接':self.isOn = False# self.server.send('【服务器消息】%s离开了聊天室'%self.client_name)else:self.server.send('%s'%(text))self.client_socket.close()# 程序入口
if __name__=="__main__":# 创建应用程序对象app = wx.App()# 创建服务器窗口server = Server()# 显示服务器窗口server.Show()# 循环显示app.MainLoop()

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

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

相关文章

BAAI 的 Aquila-VL-2B-llava-qwen: 促进视觉语言理解

简介 在人工智能领域,北京人工智能学会(BAAI)做出了重要贡献: 在人工智能领域,北京人工智能研究所(BAAI)开发的 Aquila-VL-2B-llava-qwen 模型做出了重大贡献。这一创新模型建立在 LLava-one-v…

测试实项中的偶必现难测bug--短信触发H5拒绝行为

问题描述: 企业邀请其他人加入团队,发送邀请短信给对方,对方通过短信链接跳转到H5页面,输入手机后,点击发送验证码,前提是短信通知验证弹窗需要打开,收到短信验证码后,点击一键代入,会触发拒绝加入行为。 需求: 由于我们的邀请链接是一次性的,一旦有用户确认加入或…

MCU的OTA升级(未完-持续更新)

1.术语 ISP : In-System Programming 在系统编程,是一种通过MCU(微控制器单元)上的内置引导程序(BootLoader)来实现对芯片内部存储器(如Flash)进行编程的技术。 华大目前对应的ISP IAP&…

即将盛大启幕“2025南京软件产业博览会·南京软博会”

在今年的南京软博会上,科技创新的浪潮再次席卷了整个会展现场,来自全球的软件产业精英们汇聚一堂,共同见证了软件产业的最新成果与未来趋势。随着云计算、大数据、人工智能等新兴技术的蓬勃发展,软件产业正站在一个前所未有的历史…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Exe cution_Policies。 所在位置 行:1 字符: 1 npm install ~~~ CategoryInf…

网管平台(进阶篇):如何正确的管理网络设备?

网络设备作为构建计算机网络的重要基石,扮演着数据传输、连接和管理的关键角色。从交换机、路由器到防火墙、网关,各类网络设备共同协作,形成了高效、稳定的网络系统。本文将详细介绍网络设备的种类,并探讨如何正确管理这些设备&a…

【Linux】【Vim】多文件编辑与分屏

多文件编辑 编辑另一个文件文件列表分屏vimdiff文件跳转 编辑另一个文件 除了为每一个要编辑的文件运行一次 Vim 之外,还可以在当前 Vim 中开始编辑另一个文件。 :edit foo.txtVim 会关闭当前正在编辑的文件打开指定的新文件进行编辑。如果当前文件还有未存盘的内容…

从零开始训练一个大语言模型需要多少天?

一,前言 在AI领域,训练一个大型语言模型(LLM)是一个耗时且复杂的过程。几乎每个做大型语言模型(LLM)训练的人都会被问到:“从零开始,训练大语言模型需要多久和花多少钱?”…

潮玩宇宙方块兽系统开发:可定制UI与多种游戏内嵌助力个性化体验

潮玩宇宙方块兽系统开发正在推动潮玩与游戏的融合,通过个性化的UI设计和多游戏内嵌模式,为用户带来了独一无二的体验。本文将从可定制UI、多游戏内嵌功能以及系统实现等方面入手,探讨如何构建一个极具吸引力的潮玩宇宙方块兽系统。 一、可定制…

git提交顺序为什么是:add,conmmit,pull,push

git提交顺序为什么是:add,conmmit,pull,push 01. add,conmmit,pull,push的顺序问题02. 扩展:git上传常用的六个命令包括:add、commit、push、clone、pull、fetch。 add:将文件添加到暂存区 commit:将暂存区中的文件提交…

服务器数据恢复—EVA存储故障导致上层应用不可用的数据恢复案例

服务器存储数据恢复环境: 一台EVA某型号控制器EVA扩展柜FC磁盘。 服务器存储故障&检测: 磁盘故障导致该EVA存储中LUN不可用,导致上层应用无法正常使用。 服务器存储数据恢复过程: 1、将所有磁盘做好标记后从扩展柜中取出。硬…

解决编译 fast-lio-lc 算法时遇到的error方法

1.创建工作空间和下载 fast-lio-lc功能包 mkdir -p fast_lio_lc_ws/src cd fast_lio_lc_ws/src/ catkin_init_workspace git clone https://github.com/yanliang-wang/FAST_LIO_LC.git2.进入工作空间,编译 编译 fast-lio-lc遇到的error: 🕐error: fatal error: opencv/cv…

软件著作权申请教程(超详细)(2024新版)软著申请

目录 一、注册账号与实名登记 二、材料准备 三、申请步骤 1.办理身份 2.软件申请信息 3.软件开发信息 4.软件功能与特点 5.填报完成 一、注册账号与实名登记 首先我们需要在官网里面注册一个账号,并且完成实名认证,一般是注册【个人】的身份。中…

鸿蒙ArkTS中的布局容器组件(Scroll、List、Tabs)

1、Scroll组件 Scroll组件是一个可滚动的容器组件,用于在子组件的布局尺寸超过父组件尺寸时提供滚动功能。它允许在其内部容纳超过自身显示区域的内容,并通过滚动机制来查看全部内容。这对于显示大量信息(如长列表、长篇文本或大型图像等&…

webWorker基本用法

我们都知道js是一个单线程的语言,当线程堵塞时,可能会导致页面无法正常交互,如一些复杂的可视化处理。即使是异步处理,也只是将其暂存到任务队列中去,等主线程执行完后依然会从任务队列中取过去。 为此,js提…

《手写Spring渐进式源码实践》实践笔记(第十八章 JDBC功能整合)

文章目录 第十八章 JDBC功能整合背景技术背景JDBC JdbcTemplate关键特性 用法示例业务背景 目标设计实现代码结构类图实现步骤 测试事先准备属性配置文件测试用例测试结果: 总结 第十八章 JDBC功能整合 背景 技术背景 JDBC JDBC(Java Database Conne…

【Python】轻松实现机器翻译:Transformers库使用教程

轻松实现机器翻译:Transformers库使用教程 近年来,机器翻译技术飞速发展,从传统的基于规则的翻译到统计机器翻译,再到如今流行的神经网络翻译模型,尤其是基于Transformer架构的模型,翻译效果已经有了质的飞…

Linux awk命令详解-参数-选项-内置变量-内置函数-脚本(多图、多示例)

文章目录 awk基础结构说明与示例参数与内置变量常用参数内置变量其他参数内置变量 简单示例理解option简单参数NR与FNR-v ARGC ARGV参数 执行脚本if elsefor循环关联数组指定匹配pattern 使用正则指定分隔符理解pattern正则与逻辑算术 printfif else for whileBEGIN ENDnext(跳…

RHCE的学习(12)

第九章 Ubuntu 什么是Ubuntu 概述 Ubuntu(乌班图)属于Debian系列,Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。 Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch&…

可视化建模与UML《顺序图实验报告》

旷野的规则是永不回头。 一、实验目的: 1、熟悉顺序图的构件事物。 2、熟悉发送者与接受者的关系 3、熟练掌握描绘顺序图 4、加深对顺序图的理解和应用能力 二、实验环境: window7 | 10 | 11 EA15 三、实验内容: 据如下描述绘制顺序图&…