基于python的Kimi AI 聊天应用
因为这几天deepseek有点状况,导致apikey一直生成不了,用kimi练练手。这是一个基于 Moonshot AI 的 Kimi 接口开发的聊天应用程序,使用 Python Tkinter 构建图形界面。
项目结构
项目由三个主要Python文件组成:
1. main_kimi.py
主程序入口文件,继承了ChatWindow类并实现了问答逻辑:
- 创建主应用程序窗口
- 初始化聊天逻辑
- 实现提交问题的处理函数
2. gui.py
图形界面实现文件,包含两个主要类:
ConsoleRedirector: 实现终端输出重定向,支持彩色输出和用户输入ChatWindow: 实现主要的GUI界面,包括:- API密钥输入区域(支持显示/隐藏)
- 问题输入区域
- Markdown格式的回答显示区域
- 终端输出区域(支持复制和清除)
3. func.py
核心功能实现文件:
KimiChatLogic: 实现与Moonshot AI API的交互DebugSignal: 用于调试信息的信号处理debug_print: 增强的调试输出函数
功能特点
- 支持 Markdown 格式的回答显示
- 实时显示API调用状态和耗时
- 终端风格的调试输出
- API密钥的安全显示
- 支持清除对话内容
- 支持复制终端文本
运行效果

界面分为三个主要部分:
- 顶部:API密钥输入区域
- 左侧:问题输入和回答显示区域
- 右侧:终端输出区域
使用方法
- 确保已安装所需依赖:
pip install tkinter tkhtmlview markdown requests PySide6
- 运行应用程序:
python main_kimi.py
- 在顶部输入框中填入你的 Moonshot AI API 密钥
- 在问题输入框中输入问题
- 点击"提交问题"按钮获取回答
注意事项
- 需要有效的 Moonshot AI API 密钥
- 确保网络连接正常
- 建议使用 Python 3.7 或更高版本
项目代码:
相关文章:
基于python的Kimi AI 聊天应用
因为这几天deepseek有点状况,导致apikey一直生成不了,用kimi练练手。这是一个基于 Moonshot AI 的 Kimi 接口开发的聊天应用程序,使用 Python Tkinter 构建图形界面。 项目结构 项目由三个主要Python文件组成: 1. main_kimi.py…...
动手学深度学习-3.2 线性回归的从0开始
以下是代码的逐段解析及其实际作用: 1. 环境设置与库导入 %matplotlib inline import random import torch from d2l import torch as d2l作用: %matplotlib inline:在 Jupyter Notebook 中内嵌显示 matplotlib 图形。random:生成…...
Spring 面试题【每日20道】【其二】
1、Spring MVC 具体的工作原理? 中等 Spring MVC 是 Spring 框架的一部分,专门用于构建基于Java的Web应用程序。它采用模型-视图-控制器(MVC)架构模式,有助于分离应用程序的不同方面,如输入逻辑、业务逻辑…...
嵌入式八股文面试题(一)C语言部分
1. 变量/函数的声明和定义的区别? (1)变量 定义不仅告知编译器变量的类型和名字,还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型,但并不为它分配内存空间…...
Vue06
目录 一、声明式导航-导航链接 1.需求 2.解决方案 3.通过router-link自带的两个样式进行高亮 二、声明式导航的两个类名 1.router-link-active 2.router-link-exact-active 三、声明式导航-自定义类名(了解) 1.问题 2.解决方案 3.代码演示 四…...
deepseek-r1模型本地win10部署
转载自大佬:高效快速教你deepseek如何进行本地部署并且可视化对话 deepseek 如果安装遇到这个问题 Error: Post “http://127.0.0.1:11434/api/show”: read tcp 127. 用管理员cmd打开 接着再去切换盘符d: cd 文件夹 重新下载模型:ollama run deepseek…...
自定义数据集 使用scikit-learn中SVM的包实现SVM分类
生成自定义数据集 生成一个简单的二维数据集,包含两类数据点,分别用不同的标签表示。 import numpy as np import matplotlib.pyplot as plt# 生成数据 np.random.seed(42) X np.r_[np.random.randn(100, 2) - [2, 2], np.random.randn(100, 2) [2, …...
pandas的melt方法使用
Pandas 的 melt 方法用于将宽格式(wide format)的 DataFrame 转换为长格式(long format)的 DataFrame。这种转换在数据处理和可视化中非常有用,尤其是在处理多列数据时。 宽格式 vs 长格式 宽格式(Wide F…...
一文讲解Spring中应用的设计模式
我们都知道Spring 框架中用了蛮多设计模式的: 工厂模式呢,就是用来创建对象的,把对象的创建和使用分开,这样代码更灵活。代理模式呢,是用一个代理对象来控制对真实对象的访问,可以在访问前后做一些处理。单…...
Linux的基本指令(下)
1.find指令 Linux下find命令在⽬录结构中搜索⽂件,并执⾏指定的操作。 Linux下find命令提供了相当多的查找条件,功能很强⼤。由于find具有强⼤的功能,所以它的选项也很多,其中⼤部分选项都值得我们花时间来了解⼀下。 即使系统中含…...
HAO的Graham学习笔记
前置知识:凸包 摘录oiwiki 在平面上能包含所有给定点的最小凸多边形叫做凸包。 其定义为:对于给定集合 X,所有包含 X 的凸集的交集 S 被称为 X 的 凸包。 说人话就是用一个橡皮筋包含住所有给定点的形态 如图: 正题:…...
Elasticsearch Queries
Elasticsearch Compound Queries Elasticsearch 的 Compound Queries 是一种强大的工具,用于组合多个查询子句,以实现更复杂的搜索逻辑。这些查询子句可以是叶查询(Leaf Queries)或复合查询(Compound Queries…...
利用matlab寻找矩阵中最大值及其位置
目录 一、问题描述1.1 max函数用法1.2 MATLAB中 : : :的作用1.3 ind2sub函数用法 二、实现方法2.1 方法一:max和find2.2 方法二:max和ind2sub2.3 方法对比 三、参考文献 一、问题描述 matlab中求最大值可使用函数max,对于一维向量࿰…...
SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言
目录 一、环境准备 1、MySQL 8.0 和 Navicat 下载安装 2、准备好的表和数据文件: 二、SQL语言简述 1、数据库基础概念 2、什么是SQL 3、SQL的分类 4、SQL通用语法 三、DDL(Data Definition Language):数据定义语言 1、操…...
【智力测试——二分、前缀和、乘法逆元、组合计数】
题目 代码 #include <bits/stdc.h> using namespace std; using ll long long; const int mod 1e9 7; const int N 1e5 10; int r[N], c[N], f[2 * N]; int nr[N], nc[N], nn, nm; int cntr[N], cntc[N]; int n, m, t;void init(int n) {f[0] f[1] 1;for (int i …...
Spring Security(maven项目) 3.0.2.9版本 --- 改
前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...
并发编程中的常见问题
1 竞态条件 (Race Condition) 定义:竞态条件是指多个线程在访问共享资源时,由于执行顺序的不同导致结果不确定的情况。 示例: public class Counter {private int count = 0;public void increment() {count++;}public int getCount() {return count;} }在多线程环境下,…...
二维前缀和:高效求解矩阵区域和问题
在处理二维矩阵时,频繁计算某一子矩阵的和是一个常见的操作。传统的做法是直接遍历该子矩阵,时间复杂度较高。当矩阵非常大且有大量的查询时,直接计算将变得低效。为了提高效率,我们可以通过 二维前缀和 技巧在常数时间内解决这个…...
鸢尾花书《编程不难》02---学习书本里面的三个案例
文章目录 1.引言2.第一个例子---模拟硬币的投掷结果3.第二个例子---混合两个一元高斯分布的随机数4.第三个例子---线性回归的作图5.关于书中的问题的解决方案 1.引言 今天的这个文章主要是阅读学习鸢尾花书系列的第一本《编程不难》,今天主要是记录下书里面的两个例…...
MySQL(高级特性篇) 13 章——事务基础知识
一、数据库事务概述 事务是数据库区别于文件系统的重要特性之一 (1)存储引擎支持情况 SHOW ENGINES命令来查看当前MySQL支持的存储引擎都有哪些,以及这些存储引擎是否支持事务能看出在MySQL中,只有InnoDB是支持事务的 &#x…...
别再只盯着Loss曲线了!TensorBoard的SCALARS面板还有这些隐藏玩法(附GAN训练实战)
解锁TensorBoard SCALARS面板的隐藏战力:从GAN训练曲线中洞察模型灵魂 当你盯着GAN训练中那对纠缠不清的生成器和判别器Loss曲线时,是否感觉像在解读一部悬疑小说?TensorBoard的SCALARS面板远比大多数开发者想象的强大——它不仅是数据的展示…...
如何3分钟搞定全网音乐歌词下载与管理:终极歌词工具完全指南
如何3分钟搞定全网音乐歌词下载与管理:终极歌词工具完全指南 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为找不到歌词而烦恼吗?还在手动复…...
Scratch3.0离线编辑器安装指南:一步步教你轻松搞定
1. 为什么你需要Scratch3.0离线编辑器 Scratch作为全球最受欢迎的少儿编程工具,它的在线版本虽然方便,但经常会遇到网络不稳定、加载缓慢的问题。我去年给小学生上课时就遇到过这种情况——全班40个孩子同时登录在线编辑器,结果服务器直接卡死…...
KubeSphere Core 离线部署实战:从镜像搬运到私有仓库配置
1. 离线部署KubeSphere Core的核心挑战 在企业内网环境中部署KubeSphere Core时,最大的障碍就是如何解决容器镜像的获取问题。我去年给某金融机构做私有云改造时就遇到过这种情况——他们的生产环境完全隔离,所有服务器都无法直接访问公网。当时为了部署…...
别再手动调参了!用Matlab+NRBO-BP+NSGAII搞定工艺优化,自动生成最优参数组合Excel
工艺优化新范式:基于NRBO-BP与NSGAII的智能参数寻优系统 在化工、材料、制造等领域的工艺优化过程中,工程师和研究人员常常面临一个共同的挑战:如何在有限的实验资源和时间约束下,从海量的参数组合中找到最优解。传统的手动调参方…...
保姆级移植教程:将正点原子ATK-IMU901官方例程从STM32 HAL库迁移到MSPM0G3507
跨平台传感器驱动移植实战:从STM32 HAL到MSPM0的代码重构方法论 当我们需要将成熟的传感器驱动迁移到新硬件平台时,往往面临底层接口差异带来的适配难题。本文将以正点原子ATK-IMU901十轴陀螺仪模块为例,详解如何将其官方STM32 HAL驱动移植到…...
K8s CronJob配置避坑指南:从并发策略到历史记录,这些细节你注意了吗?
K8s CronJob生产环境实战:避开那些让你夜不能寐的配置陷阱 凌晨三点,告警铃声刺破夜空——你的数据库备份任务已经连续三次未能执行,而监控面板上堆积的Job数量正在以肉眼可见的速度增长。这不是第一次了,每次CronJob出问题都像一…...
【Unity3D】从零打造动态天空盒:Cubemap生成与实时环境映射实战
1. 动态天空盒的核心原理与场景价值 第一次在Unity里看到动态天空盒效果时,我盯着屏幕愣了三秒——云层在头顶流动,夕阳的光影实时投射在建筑表面,整个场景瞬间有了生命力。这种魔法般的体验,其实都建立在立方体贴图(C…...
零成本实现外网访问内网WebDAV:cpolar内网穿透实战教程
零成本实现外网访问内网WebDAV:cpolar内网穿透实战教程 对于需要远程访问家中或办公室文件的用户来说,WebDAV协议提供了一种便捷的文件共享方式。然而,缺乏公网IP往往成为阻碍。本文将详细介绍如何利用cpolar工具,无需复杂网络配…...
Mac用户必看:Homebrew换源提速全攻略(附清华镜像最新配置)
Mac开发者必备:Homebrew国内镜像加速终极指南 每次打开终端准备用Homebrew安装新工具时,那个缓慢的下载进度条是否让你抓狂?作为Mac生态中最受欢迎的包管理工具,Homebrew的默认服务器位于海外,国内用户常遭遇下载速度以…...
