fromfastmcp.clientimportmessages#模型的调用#LangChain提供几种核心的调用方式。主要invoke(),stream(),batch()方法及异步版本的invoke(),astream(),abatch()#invoke():阻塞式一次性返回完整结果问答批处理任务无需实时反馈的场景#ainvoke()非阻塞式提高系统吞吐量高并发Web应用、IO密集型任务。#stream(:流式输出实时返回每个token聊天机器人、长文本生成、需要提升用户体验的交互#asteam():非阻塞式提高系统吞吐量高并发Web应用、IO密集型任务。#batch():批量处理多个输入高并发场景需要同时处理大量请求。#abatch():非阻塞式提高系统吞吐量高并发Web应用、IO密集型任务。#关于模型调用的invoke的使用#1.接收你的输入(问题、指令、对话历史等)#2.发送给LLM模型(如GPT-4、Llama、Claude等)#3.返回模型的响应(文本回复元数据信息)#1.invoke输入参数-文本输入fromlangchain.chat_modelsimportinit_chat_modelimportosfromdotenvimportload_dotenv# 加载配置文件load_dotenv(overrideTrue)DEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)DEEPSEEK_BASE_URLos.getenv(DEEPSEEK_BASE_URL)# 获取大模型modelinit_chat_model(modeldeepseek-v4-flash,model_providerdeepseek,temperature1.5,api_keyDEEPSEEK_API_KEY,base_urlDEEPSEEK_BASE_URL,)#向模型发送单条数据foriinrange(3):responsemodel.invoke(帮我写一首易青娥的歌词)print(response.content)参数-字典列表# 2.invoke输入参数-字典列表# 创建字典列表组成消息。一条消息通常包含role(角色)content(内容)等信息。# 适用场景:可以设置系统提示表达多轮对话历史JSON兼容易于序列化和网络传输生产环境推荐。# X缺点:代码稍微多一点(但更清晰)#messages [# {role:system,“content”:系统提示}# {role:user,content:用户消息},# {role:assistant”content”:AI回复}#可选用于对话历史# {role:usercontent:继续提问}#]#system :设定AI的行为、角色、规则 ,示例你是一个专业的Python导师#user用户的输入/问题 示例:你是周杰伦?#assistant:AI的历史回复(用于对话上下文) 示例:装饰器是一种设计模式?#示例1fromlangchain.chat_modelsimportinit_chat_modelimportosfromdotenvimportload_dotenv# 加载配置文件load_dotenv(overrideTrue)DEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)DEEPSEEK_BASE_URLos.getenv(DEEPSEEK_BASE_URL)# 获取大模型modelinit_chat_model(modeldeepseek-v4-flash,model_providerdeepseek,temperature1.5,api_keyDEEPSEEK_API_KEY,base_urlDEEPSEEK_BASE_URL,)#使用字典格式构建消息messages[{role:system,content:周杰伦是一个专业的歌手},{role:user,content:邓紫棋是一个专业的歌手}]responsemodel.invoke(messages)print(f回复--:{response.content})多轮对话-历史#示例2 多轮对话带历史# 创建字典列表组成消息。一条消息通常包含role(角色)content(内容)等信息。# 适用场景:可以设置系统提示表达多轮对话历史JSON兼容易于序列化和网络传输生产环境推荐。# X缺点:代码稍微多一点(但更清晰)#messages [# {role:system,“content”:系统提示}# {role:user,content:用户消息},# {role:assistant”content”:AI回复}#可选用于对话历史# {role:usercontent:继续提问}#]#system :设定AI的行为、角色、规则 ,示例你是一个专业的Python导师#user用户的输入/问题 示例:你是周杰伦?#assistant:AI的历史回复(用于对话上下文) 示例:装饰器是一种设计模式?#示例1fromlangchain.chat_modelsimportinit_chat_modelimportosfromdotenvimportload_dotenv# 加载配置文件load_dotenv(overrideTrue)DEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)DEEPSEEK_BASE_URLos.getenv(DEEPSEEK_BASE_URL)# 获取大模型modelinit_chat_model(modeldeepseek-v4-flash,model_providerdeepseek,temperature1.5,api_keyDEEPSEEK_API_KEY,base_urlDEEPSEEK_BASE_URL,)#使用字典格式构建消息messages[{role:system,content:邓紫棋是一个专业的歌手},{role:user,content:C大三和弦组成音},{role:assistant,content:CEG},{role:user,content:我刚才问的什么问题}]responsemodel.invoke(messages)print(f回复--:{response.content})#示例3 如果不传递历史 AI会“失意”# 创建字典列表组成消息。一条消息通常包含role(角色)content(内容)等信息。# 适用场景:可以设置系统提示表达多轮对话历史JSON兼容易于序列化和网络传输生产环境推荐。# X缺点:代码稍微多一点(但更清晰)#messages [# {role:system,“content”:系统提示}# {role:user,content:用户消息},# {role:assistant”content”:AI回复}#可选用于对话历史# {role:usercontent:继续提问}#]#system :设定AI的行为、角色、规则 ,示例你是一个专业的Python导师#user用户的输入/问题 示例:你是周杰伦?#assistant:AI的历史回复(用于对话上下文) 示例:装饰器是一种设计模式?fromlangchain.chat_modelsimportinit_chat_modelimportosfromdotenvimportload_dotenv# 加载配置文件load_dotenv(overrideTrue)DEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)DEEPSEEK_BASE_URLos.getenv(DEEPSEEK_BASE_URL)# 获取大模型modelinit_chat_model(modeldeepseek-v4-flash,model_providerdeepseek,temperature1.5,api_keyDEEPSEEK_API_KEY,base_urlDEEPSEEK_BASE_URL,)#使用字典格式构建消息messages1[{role:system,content:邓紫棋是一个专业的歌手},{role:user,content:我叫小明},]#第一次对话response1model.invoke(messages1)print(f回复1--:{response1.content})messages2[{role:user,content:我叫什么名字},]#第二次对话response2model.invoke(messages2)print(f回复2--:{response2.content})添加记忆#%%# 作为对比传递记忆# 创建字典列表组成消息。一条消息通常包含role(角色)content(内容)等信息。# 适用场景:可以设置系统提示表达多轮对话历史JSON兼容易于序列化和网络传输生产环境推荐。# X缺点:代码稍微多一点(但更清晰)#messages [# {role:system,“content”:系统提示}# {role:user,content:用户消息},# {role:assistant”content”:AI回复}#可选用于对话历史# {role:usercontent:继续提问}#]#system :设定AI的行为、角色、规则 ,示例你是一个专业的Python导师#user用户的输入/问题 示例:你是周杰伦?#assistant:AI的历史回复(用于对话上下文) 示例:装饰器是一种设计模式?fromlangchain.chat_modelsimportinit_chat_modelimportosfromdotenvimportload_dotenv# 加载配置文件load_dotenv(overrideTrue)DEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)DEEPSEEK_BASE_URLos.getenv(DEEPSEEK_BASE_URL)# 获取大模型modelinit_chat_model(modeldeepseek-v4-flash,model_providerdeepseek,temperature1.5,api_keyDEEPSEEK_API_KEY,base_urlDEEPSEEK_BASE_URL,)#使用字典格式构建消息conversation[{role:system,content:你是一个音乐助手。},{role:user,content:我最喜欢的歌手是周杰伦和邓紫棋}]#第一次对话response1model.invoke(conversation)print(f回复1--:{response1.content})#添加记忆conversation.append({role:assistant,content:response1.content})conversation.append({role:user,content:我最喜欢的歌手是谁})#第二次对话response2model.invoke(conversation)print(f回复2--:{response2.content})消息对话列表#%%#4消息对象列表# SystemMassge 系统提示# HumanMessage 用户输入# AIMessage AI回复fromlangchain_core.messagesimportSystemMessage,AIMessage,HumanMessagefromlangchain.chat_modelsimportinit_chat_modelimportosfromdotenvimportload_dotenv# 加载配置文件load_dotenv(overrideTrue)DEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)DEEPSEEK_BASE_URLos.getenv(DEEPSEEK_BASE_URL)# 获取大模型modelinit_chat_model(modeldeepseek-v4-flash,model_providerdeepseek,temperature1.5,api_keyDEEPSEEK_API_KEY,base_urlDEEPSEEK_BASE_URL,)#使用字典格式构建消息messages[SystemMessage(你是一个专业的数学老师),HumanMessage(23*2?),AIMessage(8),HumanMessage(我刚才问的什么问题)]#第一次对话response1model.invoke(messages)print(f回复1--:{response1.content})#4消息对象列表# SystemMassge 系统提示# HumanMessage 用户输入# AIMessage AI回复fromlangchain_core.messagesimportSystemMessage,AIMessage,HumanMessagefromlangchain.chat_modelsimportinit_chat_modelimportosfromdotenvimportload_dotenv# 加载配置文件load_dotenv(overrideTrue)DEEPSEEK_API_KEYos.getenv(DEEPSEEK_API_KEY)DEEPSEEK_BASE_URLos.getenv(DEEPSEEK_BASE_URL)# 获取大模型modelinit_chat_model(modeldeepseek-v4-flash,model_providerdeepseek,temperature1.5,api_keyDEEPSEEK_API_KEY,base_urlDEEPSEEK_BASE_URL,)#使用字典格式构建消息messages[SystemMessage(content你是一个音乐助手),HumanMessage(content什么是大三和弦),]#第一次对话response1model.invoke(messages)#print(f回复1--:{response1.content})#继续对话messages.append(AIMessage(contentresponse1.content))messages.append(HumanMessage(content能给个例子))response2model.invoke(messages)print(f回复2--:{response2.content})