python调用openai兼容大模型api实现电脑全局划词问ai和全局快捷键截屏问ai聊天窗口对话框代码

代码语言:python

所属分类:其他

代码描述:python调用openai兼容大模型api实现电脑全局划词问ai和全局快捷键截屏问ai聊天窗口对话框代码,任意位置鼠标划词就能跳出操作按钮,可复制,问ai、总结,改写,甚至按住ctrl+alt+a快捷键还能跳出截屏界面选择截屏问ai,提取截屏图片的文字等功能。

代码标签: python openai 兼容 大模型 api 电脑 全局 划词 ai 全局 快捷键 截屏

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
import tkinter as tk
from tkinter import scrolledtext
import threading
import time
import os
import io
import base64
import re
from pynput import mouse, keyboard
import pyperclip
from openai import OpenAI
from PIL import Image, ImageTk
import mss
import win32clipboard
import win32con
import ctypes

# --- 0. 初始化与设置 ---

# 设置DPI感知,以获得更清晰的UI元素
try:
    ctypes.windll.shcore.SetProcessDpiAwareness(1)
except Exception:
    pass
# --- 0. 初始化与设置 ---
api_key = "sk-"
if not api_key:
    print("错误:请设置 OPENAI_API_KEY 环境变量。")
    exit()
client = OpenAI(api_key=api_key,base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")


# --- 1. AI 聊天窗口 (升级版,支持Markdown渲染) ---
class ChatWindow(tk.Toplevel):
    def __init__(self, master, initial_text, task_prompt, image: Image.Image = None):
        print("[DEBUG] 创建AI聊天窗口...")
        super().__init__(master)
        self.title("AI助手")
        self.geometry("600x700")

        self.chat_history = scrolledtext.ScrolledText(self, wrap=tk.WORD, state='disabled', font=("Arial", 11), padx=5, pady=5)
        self.chat_history.pack(padx=10, pady=10, expand=True, fill='both')
        
        # 定义Markdown渲染标签
        self.chat_history.tag_configure("bold", font=("Arial", 11, "bold"))
        self.chat_history.tag_configure("italic", font=("Arial", 11, "italic"))
        self.chat_history.tag_configure("code", font=("Courier New", 10), background="#f0f0f0", lmargin1=20, lmargin2=20, relief="raised", borderwidth=1)

        self.input_frame = tk.Frame(self)
        self.input_frame.pack(padx=10, pady=5, fill='x')
        self.entry_box = tk.Entry(self.input_frame, font=("Arial", 11))
        self.entry_box.pack(side='left', expand=True, fill='x')
        self.entry_box.bind("<Return>", self.send_user_message)
        self.send_button = tk.Button(self.input_frame, text="发送", command=self.send_user_message)
        self.send_button.pack(side='right', padx=5)

.........完整代码请登录后点击上方下载按钮下载查看

网友评论0