ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【LLM-Langchain】Langchain大语言模型开发框架

【LLM-Langchain】Langchain大语言模型开发框架 Langchain 框架Langchain 文档Langchain是一个基于大语言模型的端到端应用程序开发框架旨在简化和加速利用大型语言模型LLM和对话模型构建应用程序的过程。这个框架提供了一套全面的工具、组件和接口使开发者能够更轻松地创建和管理复杂的语言模型应用。它不仅提供了丰富的大型语言模型工具还支持在开源模型的基础上快速增强模型的功能。通过LangChain开发人员可以更轻松地管理与语言模型的交互无缝地连接多个组件并集成额外的资源如API和数据库等以加强应用的能力和灵活性。LangChain的核心理念是将语言模型的能力与外部数据和计算资源结合起来以实现更强大的应用功能。一、核心组件1. Models 模型2. Messages 消息3. Tools工具4. Short-term mermory 短期记忆5. Streaming 流式6. Structured output 结构化输出二、环境搭建创建python虚拟环境启动python虚拟环境避免依赖于系统python冲突mkdirlangchain-projectcdlangchain-project python3-mvenv venv_langchain#激活sourcevenv_langchain/bin/activate deactivate#需要退出时 退出虚拟环境安装Langchain与常用依赖包直接安装pipinstalllangchain[all]-ihttps://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com# -i 指定镜像源快一些Pass : 对于比较大容易超时的包可以拎出来先安装pipinstallopenai使用requirements.txt# requirements.txt zstandard0.25.0 requests_toolbelt1.0.0 langchain0.1.0pipinstall-rrequirements.txt# 安装安装完成使用网上网上资源的import无法导出除langchain以外的模块最新版本子模块位置可能已经调整卸载langchain 1.2.2官方install参考pipinstall-Ulangchain# Requires Python 3.10# Installing the OpenAI integrationpipinstall-Ulangchain-openai# Installing the Anthropic integrationpipinstall-Ulangchain-anthropic主流集成包以langchain-openai为例三、聊天应用实例ChatOpenAI测试模型deepseek-chatfromlangchain_openaiimportChatOpenAIif__name____main__:llmChatOpenAI(modeldeepseek-chat,#gpt-5-nano,# stream_usageTrue,# temperatureNone,# max_tokensNone,# timeoutNone,# reasoning_effortlow,# max_retries2,api_keyos.environ.get(DEEPSEEK_API_KEY)base_urlhttps://api.deepseek.com,# organization...,# other params...)messages[(system,你是一个社会学与计算机领域的领导者,),(human,如何看待在当前行业形式下主动辞职待业的人),#human]ai_msgllm.invoke(messages)print(ai_msg,end\n)print(ai_msg.text)返回response_metadata{token_usage:{completion_tokens:855,prompt_tokens:22,total_tokens:877,completion_tokens_details:None,prompt_tokens_details:{audio_tokens:None,cached_tokens:0},prompt_cache_hit_tokens:0,prompt_cache_miss_tokens:22},model_provider:openai,model_name:deepseek-chat,system_fingerprint:fp_eaab8d114b_prod0820_fp8_kvcache,id:fd63b20e-77c1-462a-bf12-b0e29e3aeb93,finish_reason:stop,logprobs:None}idlc_run--019b3588-b49d-7363-b421-4597c143aedf-0usage_metadata{input_tokens:22,output_tokens:855,total_tokens:877,input_token_details:{cache_read:0},output_token_details:{}}与直接使用openai的对比【LLM-deepseek】Deepseek大语言模型 ubuntu环境搭建与API接口调用实例langchain_openai ChatOpenAIfromlangchain_openaiimportChatOpenAI# 接口调用res_messageChatOpenAI(model,base_url,api_key,...,frequency_penalty0.2).invoke(messages[(system,,),(human,),])# 打印问答回应字符串print(res_message.text)openai# Results in underlying API call of:importopenai# 接口调用res_messageopenai.OpenAI(base_url,api_key,...).chat.completions.create(model,messages[{role:system,content:},{role:user,content:}],temperature0~1.5,streamFalse,frequency_penalty0.2,...)# 问答字符串响应print(res_message.choices[0].message.content)四、实例初始化参数completion paramsclient params五、工具调用服务器内置响应API工具工具绑定.bind_toolslist(dict))fromlangchain_openaiimportChatOpenAI modelChatOpenAI(model...,output_versionresponses/v1)tool{type:web_search}model_with_toolsmodel.bind_tools([tool])responsemodel_with_tools.invoke(What was a positive news story from today?)print(response.content)管理对话状态OpenAl的响应API支持管理对话状态。传入之前消息的响应ID将延续对话线程。六、Agent创建实例天气查询单Agentimportosfromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportcreate_agentfromlangchain.toolsimporttool llmChatOpenAI(modeldeepseek-ai/DeepSeek-v3.2,#tencent/Hunyuan-MT-7B,api_keyos.environ.get(SILICONFLOW_API_KEY),base_urlos.environ.get(SILICONFLOW_API_URL,https://api.siliconflow.cn/v1))tooldefsearch(query): 搜索信息 returnf结果{query}tooldefget_weather(location): 获取位置的天气信息 returnf结果{location}的天气晴朗12~20度agentcreate_agent(modelllm,tools[search,get_weather])resultagent.invoke({messages:[{role:user,content:成都今天天气如何}]})print(result)多tool自主选择 Agentfromlangchain.agentsimportcreate_agentfromlangchain_core.toolsimporttoolfromlangchain_community.chat_modelsimportChatTongyiimportos# 1. 初始化模型llmChatTongyi(modelqwen-plus,temperature0.7,dashscope_api_keyos.environ.get(QWEN_API_KEY))# 2. 定义工具tooldefget_weather(city:str)-str:获取城市天气信息weather_db{北京:晴天15-25度,上海:多云18-28度,深圳:小雨20-30度,}returnweather_db.get(city,f{city}的天气信息暂不可用)tooldefcalculator(expression:str)-str:执行数学计算try:resulteval(expression)returnf计算结果:{expression}{result}except:return计算错误tooldefsearch_knowledge(query:str)-str:搜索知识库 实际应用是从向量数据库中查询向量数据库- 向量化存储 - 向量化 - 分块 - 文档清洗 - 文档加载 knowledge{LangChain:LangChain是一个用于开发LLM应用的框架支持工具、代理、内存管理等功能。,机器学习:机器学习是AI的子集让系统能从数据中自动学习和改进。,}forkey,valueinknowledge.items():ifkeyinquery:returnvaluereturnf未找到关于{query}的信息# 3. 创建 Agentagentcreate_agent(modelllm,tools[get_weather,calculator,search_knowledge],system_prompt你是一个专业的中文助手。仔细分析用户问题选择合适的工具来回答。)# 4. 使用 Agentresultagent.invoke({messages:[{role:user,content:langChain是什么}]})# 获取回答final_messageresult[messages][-1]print(f回答:{final_message.content})实际开发应用中知识库使用的是向量数据库搜索实现。2025年12月草稿
返回列表