聊天机器人
import tkinter as tk
from tkinter import messagebox
import urllib.request
import urllib.parse
import json
import threading
def send_message():
message = entry.get()
if not message:
messagebox.showerror("错误", "请输入一些文字!")
return
url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg=' + urllib.parse.quote(message)
try:
response = urllib.request.urlopen(url)
responses = response.read().decode("utf-8")
response_dict = json.loads(responses)
reply = response_dict["content"]
if "http" in reply:
# 如果回复包含图片链接,则调用图像生成API
generate_image(reply)
else:
# 显示AI回复
result_text.config(state=tk.NORMAL)
result_text.delete(1.0, tk.END)
result_text.insert(tk.END, reply)
result_text.config(state=tk.DISABLED)
except Exception as e:
messagebox.showerror("错误", str(e))
def generate_image(image_url):
# 这里可以调用图像生成API,如上面使用的通义万相API
# 为了简化,这里假设我们直接从给定的URL获取图像
try:
image_data = urllib.request.urlopen(image_url).read()
with open("temp_image.png", "wb") as f:
f.write(image_data)
show_image("temp_image.png")
except Exception as e:
messagebox.showerror("错误", str(e))
def show_image(image_path):
img = tk.PhotoImage(file=image_path)
image_label.config(image=img)
image_label.image = img
root = tk.Tk()
root.title("AI Chat & Image Generator")
frame = tk.Frame(root)
frame.pack(padx=10, pady=10)
entry = tk.Entry(frame, width=50)
entry.pack(side=tk.LEFT)
send_button = tk.Button(frame, text="发送", command=lambda: threading.Thread(target=send_message).start())
send_button.pack(side=tk.LEFT, padx=10)
result_text = tk.Text(root, height=10, state=tk.DISABLED)
result_text.pack(pady=10)
image_label = tk.Label(root)
image_label.pack()
root.mainloop()
浙公网安备 33010602011771号