Moonshot AI API使用(2)-环境变量配置和简单对话demo
1、添加环境变量
api key有多种使用方式,添加环境变量这种是最安全的,强烈推荐!
打开文件
vi ~/.env
在打开的文件中添加下面两行
export MOONSHOT_API_KEY="你的MOONSHOT API KEY"
export MOONSHOT_API_URL="http://api.moonshot.cn/v1"
保存并退出
:wq
2、安装需要的包
pip install -upgrade openai
pip install python-dotenv # 安装dotenv,用于加载环境变量
3、查看可用的模型
不同级别的模型使用时的价格是不一样的,具体参考官网。
import os
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # 读取本地 .env 文件,里面定义了 MOONSHOT_API_KEY和 MOONSHOT_API_URL
client = OpenAI(
api_key = os.getenv("MOONSHOT_API_KEY"),
base_url = os.getenv("MOONSHOT_API_URL")
)
model_list = client.models.list()
model_data = model_list.data
for i, model in enumerate(model_data):
print(f"model[{i}]:", model.id)
# model[0]: moonshot-v1-8k
# model[1]: moonshot-v1-32k
# model[2]: moonshot-v1-128k
4、moonshot官网例子-单轮对话
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # 读取本地 .env 文件,里面定义了 MOONSHOT_API_KEY和 MOONSHOT_API_URL
client = OpenAI(
api_key = os.getenv("MOONSHOT_API_KEY"),
base_url = os.getenv("MOONSHOT_API_URL")
)
completion = client.chat.completions.create(
model = "moonshot-v1-8k",
messages = [
{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},
{"role": "user", "content": "你好,我叫李雷,1+1等于多少?"}
],
temperature = 0.3,
)
print(completion.choices[0].message.content)
# 你好,李雷!1+1 等于 2。这是一个基本的数学加法问题。如果你有其他问题或需要帮助,请随时告诉我。
5、moonshot官网例子-多轮对话
import os
import json
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # 读取本地 .env 文件,里面定义了 MOONSHOT_API_KEY和 MOONSHOT_API_URL
client = OpenAI(
api_key = os.getenv("MOONSHOT_API_KEY"),
base_url = os.getenv("MOONSHOT_API_URL")
)
history = [{"role": "system",
"content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"}]
def format_json(json_string):
# json_string = ""
if (not isinstance(json_string,list)):
json_str = json.loads(json_string.model_dump_json())
print(json.dumps(
json_string,
indent=4,
ensure_ascii=False
))
return
def chat(query, history):
history.append({
"role": "user",
"content": query
})
completion = client.chat.completions.create(
model="moonshot-v1-8k",
messages=history,
temperature=0.3,
)
result = completion.choices[0].message.content
history.append({
"role": "assistant",
"content": result
})
return history
print(fromat_json(chat("地球的自转周期是多少?", history)))
print(fromat_json(chat("月球呢?", history)))
两次输出结果如下: