【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

相关文章

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

公共筛选组件(二次封装antd)支持代码提示

如果项目是基于antd组件库为基础搭建,可使用此公共筛选组件 使用到的库 npm i antdnpm i lodash-esnpm i @types/lodash-es -D /components/CommonSearch index.tsx import React from 'react';import { Button, Card, Form } from 'antd'

通过SSH隧道实现通过远程服务器上外网

搭建隧道 autossh -M 0 -f -D 1080 -C -N user1@remotehost##验证隧道是否生效,查看1080端口是否启动netstat -tuln | grep 1080## 测试ssh 隧道是否生效curl -x socks5h://127.0.0.1:1080 -I http://www.github.com 将autossh 设置为服务,隧道开机启动

(超详细)YOLOV7改进-Soft-NMS(支持多种IoU变种选择)

1.在until/general.py文件最后加上下面代码 2.在general.py里面找到这代码,修改这两个地方 3.之后直接运行即可

IDEA配置Tomcat远程调试

因为不想把本地的Tomcat配置改乱或者多人开发项目想测试,本文主要是记录一下,IDEA使用Tomcat远程调试的配置过程,免得一段时间不去配置到时候忘记(毕竟这次是因为忘了,所以才打算记录的…) 首先在catalina.sh添加以下内容 JAVA_OPTS="-Dcom.sun.management.jmxremote=-Dcom.sun.management.jmxremote.port

通过高德api查询所有店铺地址信息

通过高德api查询所有店铺地址电话信息 需求:通过高德api查询所有店铺地址信息需求分析具体实现1、申请高德appkey2、下载types city 字典值3、具体代码调用 需求:通过高德api查询所有店铺地址信息 需求分析 查询现有高德api发现现有接口关键字搜索API服务地址: https://developer.amap.com/api/webservice/gui

ROS话题通信流程自定义数据格式

ROS话题通信流程自定义数据格式 需求流程实现步骤定义msg文件编辑配置文件编译 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如:

DDei在线设计器-API-DDeiSheet

DDeiSheet   DDeiSheet是代表一个页签,一个页签含有一个DDeiStage用于显示图形。   DDeiSheet实例包含了一个页签的所有数据,在获取后可以通过它访问其他内容。DDeiFile中的sheets属性记录了当前文件的页签列表。   一个DDeiFile实例至少包含一个DDeiSheet实例。   本篇最后提供的示例可以在DDei文档直接预览 属性 属性名说明数

回调的简单理解

之前一直不太明白回调的用法,现在简单的理解下 就按这张slidingmenu来说,主界面为Activity界面,而旁边的菜单为fragment界面。1.现在通过主界面的slidingmenu按钮来点开旁边的菜单功能并且选中”区县“选项(到这里就可以理解为A类调用B类里面的c方法)。2.通过触发“区县”的选项使得主界面跳转到“区县”相关的新闻列表界面中(到这里就可以理解为B类调用A类中的d方法

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用

自制的浏览器主页,可以是最简单的桌面应用,可以把它当成备忘录桌面应用。如果你看不懂,请留言。 完整代码: <!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><ti