【winform】一个简单的桌面版聊天工具,支持远程授权,以及自定义API

本文主要是介绍【winform】一个简单的桌面版聊天工具,支持远程授权,以及自定义API,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、程序结构

程序主要结构如下:
在这里插入图片描述

二、 程序源码

源码包括:
在这里插入图片描述
其中dist中为打包发布后的exe文件,授权后会自动生成temp文件。aproj为工程文件,点击后可使用aardio进行修改,重新发布

使用ChatUI的核心代码如下,全部源码见源代码下载:

import web.view;
var wb = web.view(winform);
import web.rest.jsonClient;
var http = web.rest.jsonClient();
http.setAuthToken(web_api);
var ai = http.api("https://api.openai.com/v1/");
var conversation = {};
var chatGptName = "chatty";
var chatGptInfo = "一个人工智能";
wb.external = {ask = function(q){table.push(conversation,"用户:"+q);var prompt;do{prompt =  "提示:你叫"+chatGptName+","+chatGptInfo+"。<|endoftext|>"  +"当前时间:"+tostring(time())+"。<|endoftext|>"  + ..string.join(conversation,"<|endoftext|>") + "<|endoftext|>"+chatGptName+":";}while(#prompt > 2000);var ret,err = ai.completions({"prompt": prompt,//发送提示"model": "text-davinci-003",//模型 "temperature": 0.8,//热度,0~1 之间。"max_tokens": 2048,//最大允许的字符数量 "stop": {"<|endoftext|>"}  })if(ret){var a = ret.choices[1].text; table.push(conversation,chatGptName+":"+a);return a;}else {if(err[1]=='{'#){var json = web.json.tryParse(err);if(json[["error"]][["message"]]) return json[["error"]][["message"]];}return err;}};  
} 
wb.html = /**
<!DOCTYPE html><html>
<head><meta charset="utf-8" /><title>WebView2</title> <script src="https://lib.baomitu.com/react/17.0.2/umd/react.development.js"></script><script src="https://lib.baomitu.com/react-dom/17.0.2/umd/react-dom.development.js"></script><script src="https://lib.baomitu.com/chatui-core/2.4.2/index.min.js"></script> <link rel="stylesheet" href="https://lib.baomitu.com/chatui-core/2.4.2/index.min.css"> <script src="https://lib.baomitu.com/babel-standalone/7.18.13/babel.min.js"></script><script src="https://g.alicdn.com/chatui/icons/0.3.0/index.js"></script><style type="text/css">html,body,#app{height:100%}</style><script type="text/javascript">
window.onload = function () {
document.onkeydown = function() {var e = window.event || arguments[0];if (e.keyCode == 123) {return false;} else if ((e.ctrlKey) && (e.shiftKey) && (e.keyCode == 73)) {return false;} else if ((e.shiftKey) && (e.keyCode == 121)) {return false;} else if ((e.ctrlKey) && (e.keyCode == 85)) {return false;}};document.oncontextmenu = function() {return false;}
}
</script>
</head>
<body>  
<script type="text/babel"> const { useState,useEffect,useCallback,useRef } =  React;  const { default: Chat, Bubble, useMessages } = ChatUI;  const App = () => {const { messages, appendMsg, setTyping } = useMessages([{type: 'text',content: { text: 'Hello,我是 ai~' },user: { avatar: 'https://openaiapi-site.azureedge.net/public-assets/d/a95be687ff/favicon.svg' },}]);// 默认快捷短语,可选const defaultQuickReplies = [{name: '讲个笑话',isHighlight: true,},{name: '将hello翻译为中文',},{name: '用Python帮我写个Hello World!',},];// 快捷短语回调,可根据 item 数据做出不同的操作,这里以发送文本消息为例function handleQuickReplyClick(item) {handleSend('text', item.name);}function handleSend(type, val) {if (type === 'text' && val.trim()) {appendMsg({type: 'text',content: { text: val },position: 'right',});setTyping(true);aardio.ask(val).then( text=>{appendMsg({type: 'text',content: { text: text },}); }) }}function renderMessageContent(msg) {const { content } = msg;return <Bubble content={content.text.trim()} />;}return (<Chatnavbar={null}messages={messages}renderMessageContent={renderMessageContent}quickReplies={defaultQuickReplies}onQuickReplyClick={handleQuickReplyClick}onSend={handleSend}/>);};ReactDOM.render(<App />, document.querySelector('#app')); 
</script>
<div id="app"></div>
**/winform.show();
return win.loopMessage();

四、 参考

chatui官方文档
百度云函数

这篇关于【winform】一个简单的桌面版聊天工具,支持远程授权,以及自定义API的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

使用PyQt5编写一个简单的取色器

《使用PyQt5编写一个简单的取色器》:本文主要介绍PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16进制颜色编码,一款跟随鼠标刷新图像的RGB和16... 目录取色器1取色器2PyQt5搭建的一个取色器,一共写了两款应用,一款使用快捷键捕获鼠标附近图像的RGB和16

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

Xshell远程连接失败以及解决方案

《Xshell远程连接失败以及解决方案》本文介绍了在Windows11家庭版和CentOS系统中解决Xshell无法连接远程服务器问题的步骤,在Windows11家庭版中,需要通过设置添加SSH功能并... 目录一.问题描述二.原因分析及解决办法2.1添加ssh功能2.2 在Windows中开启ssh服务2

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要