如何使用Langchain集成Kimi(Moonshot AI)
- 一、获取API密钥
- 1. 注册账号
- 2. 获取密钥
- 二、环境配置
- 三、上手
- 四、整合一下
- 五、检验一下成果
- 六、官方网站
一、获取API密钥
1. 注册账号
毕竟只有注册过帐号才能拿到key~
Moonshot 登陆
2. 获取密钥
用户中心 > api Key管理 > 新建
PS:注意保存好你的key,这个key只会在新建的时候展示一次。
PS2:不要把你的key给任何人,有了key就可以使用你的token,token就是钱!
二、环境配置
要确保你的python环境没问题,然后需要下载如下库
python没下载的先下载一下python,这里就不再赘述了
#安装langchain库
pip install langchain
#安装Openai库
pip install openai
# 安装langchain集成社区库
pip install langchain_community
三、上手
先用一下原生的api试试链接是否成功
from openai import OpenAI
# 连接
client = OpenAI(api_key = '你的key',base_url = 'https://api.moonshot.cn/v1',
)
# prompt
response = client.chat.completions.create(model="moonshot-v1-8k", # 模型名messages=[{"role": "system", "content": "You are a creative AI."},{"role": "user", "content": "请给我的花店起个名,多输出几个结果,直接输出名字,不要输出多余的语句"},], # prompt要求temperature=0.8, # 随机度max_tokens=20, # 最大输出token数#这个的意思是将结果截取到这个token数,并不是response只有这些token数
)
# 输出
print(response.choices[0].message.content)
1. 花语轩
2. 绿意坊
3. 香韵园
ok,没有问题。
接下来集成到Langchain里试试
import os
from langchain_community.llms.moonshot import Moonshot
os.environ["MOONSHOT_API_KEY"] = '你的key'
chat = MoonshotChat(model="moonshot-v1-8k",temperature=0.8,max_tokens=20,)
messages = [SystemMessage(content="你是一个很棒的智能助手"),HumanMessage(content="请给我的花店起个名,多输出几个结果,直接输出名字,不要输出多余的语句")
]
response = chat(messages)
print(response)
content='1. 绿意轩花坊\n2. 芳菲满园\n3. 花' additional_kwargs={} response_metadata={'token_usage': {'completion_tokens': 20, 'prompt_tokens': 39, 'total_tokens': 59, 'completion_tokens_details': None, 'prompt_tokens_details': None}, 'model_name': 'moonshot-v1-8k', 'system_fingerprint': None, 'finish_reason': 'length', 'logprobs': None} id='run-e262850d-46da-4fd2-b162-17dbfe05a357-0'
ok,没有问题
这个可以清晰的看出来response到底返回给我们了点什么
四、整合一下
这个使用到了读取配置文件的库,需要下载configparser包
pip install configparser
直接把key输入到运行文件里的安全性很低,很容易泄漏,而且耦合性还高,推荐大家自己写个配置文件,像下面这样:
新建setting.ini文件,将下面这些写入
# setting.ini
# 这里key的内容不需要加引号,直接粘贴进去即可
[Moonshot]
OPENAI_API_KEY=你的key
model=moonshot-v1-8k
url=https://api.moonshot.cn/v1
如果你不只想集成moonshot,还想集成其他的语言模型或者数据库等配置,可以直接在此文件添加section来统一管理,很方便。
新建init.py文件,专用于初始化,方便使用。
# init.py
import os
import configparser
from langchain_community.llms.moonshot import Moonshot
from openai import OpenAI
config = configparser.ConfigParser()
config.read("setting.ini")
os.environ["MOONSHOT_API_KEY"] = config["Moonshot"]["OPENAI_API_KEY"]
# 默认llm配置。
llm = Moonshot(model=config["Moonshot"]["model"],temperature=0.8,max_tokens=20,
)# openAi 默认的接口.
client = OpenAI(api_key = config["Moonshot"]["OPENAI_API_KEY"],base_url = config["Moonshot"]["url"],
)
五、检验一下成果
之前的两个示例可以简化成下面这样
import init
# 使用了默认的client配置
response = init.client.chat.completions.create(model="moonshot-v1-8k",messages=[{"role": "system", "content": "You are a creative AI."},{"role": "user", "content": "请给我的花店起个名,多输出几个结果,直接输出名字,不要输出多余的语句"},],temperature=0.8,max_tokens=20,
)
print(response.choices[0].message.content)
from langchain_community.chat_models.moonshot import MoonshotChat
from langchain.schema import HumanMessage, SystemMessage
import init
# 这里没有直接用init中的默认配置
# 可以直接这样再次定义,不需要再次导入key之类的东西了
# 虽然代码中没有直接体现init包,但是不要删,这部初始化调用到了init中设定的环境变量
chat = MoonshotChat(model="moonshot-v1-8k",temperature=0.6,max_tokens=50,)
messages = [SystemMessage(content="你是一个很棒的智能助手"),HumanMessage(content="请给我的花店起个名,多输出几个结果,直接输出名字,不要输出多余的语句")
]
response = chat(messages)
print(response)
六、官方网站
最后放一下官方的网站,方便大家学习
Introduction | 🦜️🔗 LangChain
Moonshot AI - 开放平台