调用kimi实现AI对话
- [1. 申请key和基本要求](#1. 申请key和基本要求)
-
- [1.1 注意事项](#1.1 注意事项)
- [1.2 学习](#1.2 学习)
- [2. 用法](#2. 用法)
-
- [2.1. 非连续对话的完整版](#2.1. 非连续对话的完整版)
- [2.2. 加强连续对话的能力](#2.2. 加强连续对话的能力)
1. 申请key和基本要求
进入Moonshot AI的网址,按照如下操作获取key,并记住其值,方便后续使用
1.1 注意事项
如果是自己一个人用的话,注意 RPM,每分钟可以询问次数。刚注册的话,每分钟只能对话三次,超过的话,就会报警。
1.2 学习
在Moonshot AI上面有着丰富的学习资料,可以参考和借鉴
2. 用法
以下是非联网的做法,仅调用kimi.AI的基础对话功能。
2.1. 非连续对话的完整版
python
from openai import OpenAI
import time
class Main_Name():
def __init__(self):
super().__init__()
self.main()
def AIclient(self):
self.client = OpenAI(
api_key="MOONSHOT_API_KEY", # 在这里将 MOONSHOT_API_KEY 替换为你从 Kimi 开放平台申请的 API Key
base_url="https://api.moonshot.cn/v1",
)
# 内容输入
def InputContent(self, content):
completion = self.client.chat.completions.create(
model="moonshot-v1-8k",
messages=[
{"role": "user", "content": content}
],
temperature=0.3,
)
# 通过 API 我们获得了 Kimi 大模型给予我们的回复消息(role=assistant)
return completion.choices[0].message.content # 获取问答结果
def main(self):
self.AIclient() # 调用API
# try:
while True:
# 检测用户输入
self.content = input("用户: ") # 输入内容
self.answer = self.InputContent(self.content) # 调用问答并返回结果
print(self.answer) # 打印结果
time.sleep(2) # 增加休眠时间,防止每分钟的聊天超过限制
# except: pass
# 通过 API 我们获得了 Kimi 大模型给予我们的回复消息(role=assistant)
if __name__ == '__main__':
ex = Main_Name()
ex.main()
2.2. 加强连续对话的能力
调用API时加载初始对话
python
def AIclient(self):
self.client = OpenAI(
api_key="MOONSHOT_API_KEY", # 在这里将 MOONSHOT_API_KEY 替换为你从 Kimi 开放平台申请的 API Key
base_url="https://api.moonshot.cn/v1",)
self.messages = [{"role": "system", "content": "你是 Kimi。"},] # 初始对话内容及预设
内容输入时将新的内容添加入对话中
python
def InputContent(self, content):
self.messages.append({"role": "user", "content": content})
completion = self.client.chat.completions.create(
model="moonshot-v1-8k",
messages=self.messages,
temperature=0.3,)
# 通过 API 我们获得了 Kimi 大模型给予我们的回复消息(role=assistant)
assistant_message = completion.choices[0].message
# 为了让 Kimi 大模型拥有完整的记忆,我们必须将 Kimi 大模型返回给我们的消息也添加到 messages 中
self.messages.append(assistant_message)
# 返回回答内容
return completion.choices[0].message.content
替换上述两个代码块即可实现连续对话的功能。