169个模型每个模型100w tokens 大家可以都来体验一下
1.获取API Key
在模型服务密钥管理中获取api key
2.配置API Key到环境变量
2.1在PowerShell中运行以下命令
# 用您的百炼API Key代替YOUR_DASHSCOPE_API_KEY
[Environment]::SetEnvironmentVariable("DASHSCOPE_API_KEY", "YOUR_DASHSCOPE_API_KEY", [EnvironmentVariableTarget]::User)
[Environment]::SetEnvironmentVariable("DASHSCOPE_API_KEY", "YOUR_DASHSCOPE_API_KEY", [EnvironmentVariableTarget]::User)
3.调用api使用
本人用python生产了一个简单的程序可以调用api,有一个简单的对话窗口。
程序如下
import os
import threading
import tkinter as tk
from tkinter import scrolledtext, font
from dashscope import Generation
# ---------- 对话管理类 ----------
class ChatSession:
def __init__(self):
self.messages = [
{'role': 'system', 'content': 'You are a helpful assistant.'}
]
def add_user_message(self, text):
self.messages.append({'role': 'user', 'content': text})
def add_assistant_message(self, text):
self.messages.append({'role': 'assistant', 'content': text})
def call_api(self, user_input):
self.add_user_message(user_input)
try:
response = Generation.call(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 或直接填写 "sk-xxx"
model="qwen1.5-7b-chat", # 可按需更换模型
messages=self.messages,
result_format="message"
)
if response.status_code == 200:
reply = response.output.choices[0].message.content
self.add_assistant_message(reply)
return reply
else:
error_msg = f"错误 {response.status_code}: {response.message}"
self.messages.pop() # 移除刚添加的用户消息
return error_msg
except Exception as e:
self.messages.pop()
return f"请求异常: {str(e)}"
# ---------- GUI 界面 ----------
class ChatGUI:
def __init__(self):
self.window = tk.Tk()
self.window.title("千问聊天机器人")
self.window.geometry("600x700")
self.window.resizable(False, False)
# 设置字体
chat_font = font.Font(family="微软雅黑", size=11)
input_font = font.Font(family="微软雅黑", size=11)
# 消息显示区域(带滚动条)
self.chat_area = scrolledtext.ScrolledText(
self.window, wrap=tk.WORD, font=chat_font,
state='disabled', height=25, padx=10, pady=10
)
self.chat_area.pack(padx=15, pady=15, fill=tk.BOTH, expand=True)
# 底部输入框架
frame_input = tk.Frame(self.window)
frame_input.pack(padx=15, pady=(0,15), fill=tk.X)
self.input_entry = tk.Entry(frame_input, font=input_font)
self.input_entry.pack(side=tk.LEFT, fill=tk.X, expand=True, ipady=5)
self.input_entry.bind("<Return>", lambda e: self.send_message())
self.send_btn = tk.Button(
frame_input, text="发送", command=self.send_message,
width=10, height=1, font=font.Font(size=10)
)
self.send_btn.pack(side=tk.RIGHT, padx=(10,0))
# 初始化对话历史
self.session = ChatSession()
# 显示欢迎信息
self._display_message("系统", "你好!我是千问助手,有什么可以帮你的?")
self.window.mainloop()
# 在聊天区显示一条消息
def _display_message(self, sender, content):
self.chat_area.config(state='normal')
self.chat_area.insert(tk.END, f"{sender}: {content}\n\n")
self.chat_area.see(tk.END) # 自动滚动到底部
self.chat_area.config(state='disabled')
# 发送消息
def send_message(self):
user_input = self.input_entry.get().strip()
if not user_input:
return
# 清空输入框
self.input_entry.delete(0, tk.END)
# 显示用户消息
self._display_message("你", user_input)
# 禁用发送按钮,防止重复点击
self.send_btn.config(state='disabled')
self.input_entry.config(state='disabled')
# 在新线程中调用 API,避免界面卡死
def api_call():
reply = self.session.call_api(user_input)
# 回到主线程更新 UI
self.window.after(0, self._display_message, "AI", reply)
self.window.after(0, self._enable_input)
threading.Thread(target=api_call, daemon=True).start()
# 恢复输入状态
def _enable_input(self):
self.send_btn.config(state='normal')
self.input_entry.config(state='normal')
self.input_entry.focus()
if __name__ == "__main__":
ChatGUI()
文章评论