直接创建LLM实例 本来想用openai的chatgpt的,但是奈何账号已经注册了很久了,早就没有免费额度了,外国网站充钱又很难,所以所幸去接入deepseek了,好在ds是适配openai的api格式的。
点我去申请DeepSeek API key
剩下的就是简单编个码开始调用api
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 from langchain_openai import ChatOpenAIfrom langchain_core.messages import HumanMessage,SystemMessagemodel = ChatOpenAI(model="deepseek-chat" ,openai_api_base="https://api.deepseek.com/v1" ) messages = [ SystemMessage(content="translate the following from English into Chinese" ), HumanMessage(content="hi I'm Supdriver~" ) ] resuilt = model.invoke(messages) print (resuilt)
输出如下
然而结构化的输出可读性太差,所以我们要用到from langchain_core.output_parsers import StrOutputParser里面的解析器
1 2 3 4 5 result = model.invoke(messages) outStr = StrOutputParser().invoke(result) print (outStr)
输出
1 2 3 4 D:\program_software\AnaConda\envs\langChainP13\python.exe D:\codes\code_pycharm\langChainTool\main.py 你好,我是Supdriver~ Process finished with exit code 0
然后我们来把这两步组成链式调用,首先引入包from langchain_core.output_parsers import StrOutputParser ,稍后修改调用部分
1 2 3 4 parser = StrOutputParser() chain = model | parser print (chain.invoke(messages))
使用工厂函数 langchain还提供了init_chat_model()作为工厂函数,生成各类厂商的LLM实例
它的接口参数数量上比较自由,下面有一些常用接口的介绍
参数名
参数描述
model
要使用的模型名称
model_provider
模型提供方。可参阅langchain文档。形如"openai"、deepseek之类,会自动映射到langchain-openai之类对应的组件
configurable_fields
设置哪些配置项可以在运行时重新配置,选项有: None:没有可配置的字段 'any':所有字段均可更改 Union[List[str], Tuple[str, …]]:指定的字段是可配置的
temperature
采样温度,温度值越⾼,AI回答越天⻢⾏空;温度越低,回答越保守靠谱
max_tokens
要⽣成的最token数
timeout
请求超时时间
max_retries
最大重试次数
openai_api_key / api_key
OpenAI API 密钥。如果未传入,将从环境变量中读取 OPENAI_API_KEY。
base_url
API 请求的基本 URL。
……
创建不可配置模型的示例 1 2 3 4 5 6 7 8 9 10 11 12 from langchain.chat_models.base import init_chat_modelfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.messages import HumanMessage,SystemMessagemodel = init_chat_model(model="deepseek-chat" ,model_provider="deepseek" ) messages = [ SystemMessage("Response in Chinese" ), HumanMessage("What's your name,Response in Chinese" ) ] chain = model | StrOutputParser() print (chain.invoke(messages))
输出如下
1 2 3 4 5 6 7 8 D:\program_software\AnaConda\envs\langChainP13\python.exe D:\codes\code_pycharm\langChainTool\main.py 我的名字是DeepSeek,由深度求索公司创造的AI助手!很高兴认识你!😊 我是一个纯文本模型,虽然不支持多模态识别,但我可以帮你处理上传的各种文件(图像、txt、pdf、ppt、word、excel等),从中读取文字信息来协助你。而且我完全免费,拥有128K的上下文长度,还支持联网搜索功能。 有什么我可以帮你的吗?无论是回答问题、协助工作还是日常聊天,我都很乐意为你提供帮助! Process finished with exit code 0
创建可配置的模型的示例 我们要用到from langchain_core.runnables.config import RunnableConfig存储配置项
1 2 3 4 5 6 7 from langchain.chat_models.base import init_chat_modelfrom langchain_core.runnables.config import RunnableConfigconfigurable_model = init_chat_model(temperature=0.5 ) runnable_config = RunnableConfig({"configurable" :{"model" :"deepseek-chat" ,"model_provider" :"deepseek" }}) print (configurable_model.invoke("what's your name,response in chinese" ,config=runnable_config).content)
1 2 3 4 5 6 D:\program_software\AnaConda\envs\langChainP13\python.exe D:\codes\code_pycharm\langChainTool\main.py 我的名字是DeepSeek,由深度求索公司创造的AI助手!很高兴认识你!😊 有什么我可以帮助你的吗?无论是回答问题、协助思考问题,还是进行有趣的对话,我都很乐意为你提供帮助! Process finished with exit code 0
创建运行时可配置的模型的示例 我们来传入configurable_field参数,让模型能在运行时被配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 from langchain.chat_models.base import init_chat_modelfrom langchain_core.runnables.config import RunnableConfigconfigurable_model = init_chat_model( model="gpt-5-mini" , temperature=0 , configurable_fields=("model" , "model_provider" , "temperature" , "max_tokens" ), config_prefix="pre_first" , ) runnable_config = RunnableConfig({ "configurable" :{ "pre_first_model" :"deepseek-chat" , "pre_first_model_provider" :"deepseek" , "pre_first_temperature" :0.5 } }) print (configurable_model.invoke("what's your name,response in chinese" ,config=runnable_config).content)
输出如下,可以看到,实际上被调用的模型还是改成了DeepSeek
1 2 3 4 5 6 7 D:\program_software\AnaConda\envs\langChainP13\python.exe D:\codes\code_pycharm\langChainTool\main.py 我的名字是DeepSeek,由深度求索公司创造的AI助手!很高兴认识你!😊 有什么我可以帮助你的吗?无论是回答问题、协助思考问题,还是进行有趣的对话,我都很乐意为你提供帮助! Process finished with exit code 0