一、金光闪闪
未来科技弄潮儿——大模型AI技术。不仅是当前科技发展最前沿,其涵盖机器学习、深度学习、自然语言处理、计算机视觉等等,也是解决人们问题的好帮手。在我看来,当前AI大模型很像人类智慧的集合体,仿佛它是拥有大肚子的饕餮,不断把全世界的书籍、博物馆、知识吞入腹中,贯穿古今,编织未来。
二、开发环境准备
- 编程软件 :PyCharm 2023.1.1
- 编程语言 :Python 3.8.10
- AI模型和API接口 :DeepSeek-V3 (深度求索)
2.1 检查openai版本
DeepSeek API 使用与 OpenAI 兼容的 API 格式,通过修改配置,您可以使用 OpenAI SDK 来访问 DeepSeek API,或使用与 OpenAI API 兼容的软件。
# 基础性的python知识,不是本文重点,不做讲述
# 在python的控制台输入,检查 Python 环境中安装的 openai 库版本
pip show openai
# 列出所有已安装的 Python 包及其版本
pip list
# 版本太低,升级到1.x版本,如下图升级openai到 1.60.0版本
pip install --upgrade openai
三、DeepSeek-API调用尝试
首次调用api的官网地址:https://api-docs.deepseek.com/zh-cn/,参照官方文档,我们新建 AItest.py文件,代码如下:
from openai import OpenAI
# 初始化客户端,使用 DeepSeek 的 API 地址和你的 API 密钥
client = OpenAI(api_key="your-deepseek-api-key", base_url="https://api.deepseek.com")
# 调用 API
response = client.chat.completions.create(
model="deepseek-chat", # 确认模型名称是否正确
messages=[
{"role": "system", "content": "you are a helpful assistant"},
{"role": "user", "content": "hello"},
],
stream=False # 确认是否支持 stream 参数
)
# 输出结果(假设响应结构与 OpenAI 相同)
print(response.choices[0].message.content)
理解上述代码:
- 引入openai,调用DeepSeek官方api接口,在DeepSeek官方申领我们的试用api-key;
- 告诉AI,他是一个很棒的助手
- 我们向AI发送 “hello”的信息,将AI的回答打印出来
到这里,我们已经可以调用DeepSeek的api接口,让ai回答问题。更深一步,如何与它进行持续对话,让它保持运行状态,让我们在控制台或者什么界面,可以开展交流?
四、做一个AI客服吧
一个AI客服,能够保持时时刻刻在线,当你询问它问题时,能给你很棒的回答。让其保持持续的对话状态,尝试修改代码:
from openai import OpenAI
# 初始化 DeepSeek 客户端
client = OpenAI(api_key="your-deepseek-api-key", base_url="https://api.deepseek.com")
# 初始化对话历史
messages = [
{"role": "system", "content": "首先明确你自己是一个机器助手,你的名字叫做AI童子"}
]
# 持续对话循环
while True:
# 获取用户输入
user_input = input("You: ")
# 如果用户输入 "exit",退出对话
if user_input.lower() in ["exit", "quit"]:
print("Goodbye!")
break
# 将用户输入添加到对话历史
messages.append({"role": "user", "content": user_input})
# 调用 DeepSeek API
try:
response = client.chat.completions.create(
model="deepseek-chat", # 替换为 DeepSeek 支持的模型名称
messages=messages,
stream=False # 如果需要流式响应,可以设置为 True
)
# 获取 AI 回复
ai_response = response.choices[0].message.content
# 打印 AI 回复
print(f"AI: {ai_response}")
# 将 AI 回复添加到对话历史
messages.append({"role": "assistant", "content": ai_response})
except Exception as e:
print(f"An error occurred: {e}")
运行效果:
4.1、让AI客服界面更加美观
控制台这个界面对话不好看,再次改造为弹窗对话,使界面更加人性化。我们给这个AI客服取一个新的名字 "deepseek的孩子,东方AI童子"吧!再次修改代码,如下:
import tkinter as tk
from tkinter import scrolledtext
from openai import OpenAI
# 初始化 DeepSeek 客户端
client = OpenAI(api_key="your-deepseek-api-key", base_url="https://api.deepseek.com")
# 初始化对话历史
messages = [
{"role": "system", "content": "记住你的名字叫做东方AI童子"}
]
# 发送消息给 AI 并获取流式回复
def send_message():
# 获取用户输入
user_input = input_box.get("1.0", tk.END).strip()
if not user_input:
return
# 清空输入框
input_box.delete("1.0", tk.END)
# 将用户输入添加到对话历史
messages.append({"role": "user", "content": user_input})
# 在显示框中显示用户输入
chat_history.config(state=tk.NORMAL)
chat_history.insert(tk.END, f"cll: {user_input}\n", "user")
chat_history.config(state=tk.DISABLED)
# 调用 DeepSeek API 获取流式回复
try:
stream_response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
stream=True # 启用流式响应
)
# 初始化 AI 回复内容
ai_response = ""
# 遍历流式响应的每个 chunk
for chunk in stream_response:
if chunk.choices and chunk.choices[0].delta.content:
# 获取当前 chunk 的内容
chunk_content = chunk.choices[0].delta.content
ai_response += chunk_content
# 在显示框中实时更新 AI 回复
chat_history.config(state=tk.NORMAL)
chat_history.insert(tk.END, chunk_content, "ai")
chat_history.config(state=tk.DISABLED)
# 自动滚动到最新消息
chat_history.yview(tk.END)
chat_window.update() # 实时更新界面
# 将完整的 AI 回复添加到对话历史
messages.append({"role": "assistant", "content": ai_response})
except Exception as e:
# 显示错误信息
chat_history.config(state=tk.NORMAL)
chat_history.insert(tk.END, f"Error: {str(e)}\n", "error")
chat_history.config(state=tk.DISABLED)
# 自动滚动到最新消息
chat_history.yview(tk.END)
# 创建主窗口
root = tk.Tk()
root.withdraw() # 隐藏主窗口
# 创建弹窗式聊天窗口
chat_window = tk.Toplevel(root)
chat_window.title("deepseek的孩子,东方AI童子,来自CLL")
# 设置窗口大小和位置
chat_window.geometry("400x500+500+200") # 宽度x高度+水平偏移+垂直偏移
# 创建显示框(用于显示聊天记录)
chat_history = scrolledtext.ScrolledText(chat_window, wrap=tk.WORD, state=tk.DISABLED)
chat_history.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)
# 设置不同消息的样式
chat_history.tag_config("user", foreground="blue")
chat_history.tag_config("ai", foreground="green")
chat_history.tag_config("error", foreground="red")
# 创建输入框
input_box = tk.Text(chat_window, height=3, wrap=tk.WORD)
input_box.pack(padx=10, pady=10, fill=tk.X)
# 创建发送按钮
send_button = tk.Button(chat_window, text="Send", command=send_message)
send_button.pack(pady=10)
# 运行主循环
chat_window.mainloop()
运行效果:
到这一步,实现了创建自己的AI对话框-AI客服!
把这个对话框嵌入到网页里面、或者包装成接口以供其他人调用,就做出自己的产品 - 东方AI童子客服(laugh 内部调用的deepseek公司的大模型语言接口)
PS:当前只是AI运用的基础部分,大模型数据预处理、AI训练和算法,深度学习模型才是核心。让我们怀着欲穷千里目,更上一层楼的心态,从AI应用开始逐步进入AI的世界。