使用Python结合大模型创建自己的人工智能助手(喵娘)
·
本内容用于创建一个简单的大模型助手,可以从模型官网调用api,并进行简单的角色设定。这里我调用的是通义千问的api。本内容仅为个人笔记记录。
API及密钥获取
进入阿里云官网,在大模型部分点击体验,登录,如果是第一次使用的话目前通义的模型送有免费额度。

登陆后左边框部分会出现密钥管理选项,进入该选项,并创建密钥。新用户可以领取年费额度,如果需要在免费额度用完后立即停止使用模型,可以在左上角红框部分点击更多信息的链接,进入后可以看到免费额度用完即停设置方式的提示,可以根据提示进行设置。
在左上角红框附近点击API参考,即可进入API相关内容的界面,由此可以进一步了解有关设置。
智能助手构建
为了方便使用,只是单纯的调用难以满足灵活性和可用性,所以在这里将代码进行抽象,为智能助手构建一个专门的类。
导入所需模块
import os
from openai import OpenAI
import json
构建类
class Miya:
"""
这是 Miya 智能助手的类。
"""
def __init__(self, key_path: str, model: str = 'qwen-plus', sys_content: str = "You are a helpful assistant."):
self.key_path = key_path
self.model = model
self.sys_content = sys_content
def get_key(self) -> str:
"""
从文件中读取 API 密钥
"""
if not os.path.exists(self.key_path):
raise FileNotFoundError(f"API key file not found: {self.key_path}")
with open(self.key_path, 'r', encoding='utf-8') as file:
key = file.read().strip()
return key
def build_client(self) -> OpenAI:
"""
构建 OpenAI 客户端
"""
return OpenAI(
api_key=self.get_key(),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # 替换为正确端点
)
def response(self, content: str):
"""
发送请求并获取响应
"""
try:
client = self.build_client()
completion = client.chat.completions.create(
model=self.model,
messages=[
{"role": "system", "content": self.sys_content},
{"role": "user", "content": content},
],
# extra_body={"enable_thinking": False},
)
return completion
except Exception as e:
raise RuntimeError(f"API 请求失败: {str(e)}")
def chatbox(self, content: str) -> str:
"""
处理用户输入并返回结果
"""
try:
completion = self.response(content)
if completion.choices:
return completion.choices[0].message.content
else:
return "API 返回无结果。"
except FileNotFoundError as e:
return f"密钥文件未找到:{str(e)}"
except Exception as e:
return f"请求失败:{str(e)}"
编写调用类的主函数
from alice import Miya
path = r"你的密钥存储路径/密钥.txt"
miya = Miya(path,sys_content="你需要扮演一个可爱的喵娘,和你对话的是你的主人哦!")
while True:
message = input("【停止请输入quit】我:")
if message == 'quit':
break
else:
responce = alice.chatbox(message)
print(responce)
代码中的 base_url请参考官网上的API参考部分的示例代码,将密钥保存在一个较为隐秘的地方,通过路径来调用可以避免密钥直接显示。密钥需要保存为txt格式,在主函数中的 path部分输入密钥的完整路径。另外,使用from导入Miya类的时候,注意python模块导入的一些细节(具体可以问AI)。
结果演示
可以导航到所在代码的路径,然后打开终端,使用python 程序.py 运行主程序,就可以和及其助手聊天了。如果想让Miya扮演不同的角色,可以构建Miya实例是时候写入想要的sys_content的值。

如果需要停止,可以输入quit停止。
【注意:每次对话都是独立进行的,助手无法保留上下文记忆。如需实现记忆功能,请参考我博客中的补充说明。】
更多推荐

所有评论(0)