支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


大模型开发基础:LangChain基础样例

发布日期:2025-06-24 05:18:36 浏览次数: 1602
作者:CreatorAI

微信搜一搜,关注“CreatorAI”

推荐语

LangChain框架助你快速构建大模型应用,从基础对话到智能代理一站式开发。

核心内容:
1. LangChain三大核心组件与生态体系解析
2. 多模型统一调用与提示模板实战演示
3. 从环境配置到首个对话应用的完整实现流程

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

LangChain 是一个用于开发由大语言模型(LLM)驱动的应用程序的框架。LangChain 生态简化了大语言模型应用程序生命周期的每个阶段:

  • LangChain:拥有丰富的开源组件和第三方集成,供应商达数百家;

  • LangGraph:利用图(节点-边)的概念,可以轻松构建具有流式传输和人工介入支持的有状态Agent,还可以将程序封装成API进行调用;

  • LangSmith:可以检查、监控和评估应用程序,观察程序运行中的状态数据,以便程序能够持续优化。


今天我们以langchain为例,实现一些简单开发用例。


LangChain核心架构组件

  • LLMs(大语言模型):支持多种模型:OpenAI GPT、Anthropic Claude、Google Gemini、DeepSeek 等,统一的接口能够调用不同的模型

  • Prompts(提示模板):结构化的提示管理,支持变量替换和复杂模板

  • Chains(链式调用):可以将多个组件串联起来,实现复杂的处理流程

  • Agents(智能代理):能够使用工具的 AI 助手,根据用户输入决定调用哪些工具

  • Tools(工具):扩展 LLM 的能力,如搜索、计算、API 调用等

  • Memory(记忆):在对话中保持上下文支持多种记忆类型。


实践1-LLM-直接对话

因为AI对Python支持更友好,所以我们选取了Python作为实践语言,首先需要提前准备好Python环境。

LangChain的功能非常灵活,我们下面将展示最基本的应用。


安装需要的包并进行相关引入

pip install langchain langchain-core langchain-openai python-dotenv


创建.env文件并配置API_KEY(例子中选用了Deepseek,需要付费,国内免费API推荐智谱

# DeepSeek API密钥(当前代码使用的)DEEPSEEK_API_KEY=your_deepseek_api_key_here
# 如果要使用其他LLM,需要相应的API密钥# OPENAI_API_KEY=your_openai_api_key_here# ANTHROPIC_API_KEY=your_anthropic_api_key_here# GOOGLE_API_KEY=your_google_api_key_here# MISTRAL_API_KEY=your_mistral_api_key_here


导入对应python包,实现基础对话功能

from langchain_openai import ChatOpenAIfrom dotenv import load_dotenv


LLM 初始化,接入方式大同小异,根据不同LLM信息接入

# 读取环境变量中的API_KEYload_dotenv()
def agent_example():    # 初始化DeepSeek LLM    llm = ChatOpenAI(        model="deepseek-chat",        api_key=os.getenv("DEEPSEEK_API_KEY"),        temperature=0.7,        base_url="https://api.deepseek.com/v1"    )        # 初始化OpenAI LLM    # llm = ChatOpenAI(    #     model="gpt-4",    #     api_key=os.getenv("OPENAI_API_KEY"),    #     temperature=0.7    # )        # 初始化Anthropic Claude LLM    # llm = ChatAnthropic(    #     model="claude-3-opus-20240229",    #     api_key=os.getenv("ANTHROPIC_API_KEY"),    #     temperature=0.7    # )        # 初始化Google Gemini LLM    # llm = ChatGoogleGenerativeAI(    #     model="gemini-pro",    #     api_key=os.getenv("GOOGLE_API_KEY"),    #     temperature=0.7    # )        # 初始化Mistral LLM    # llm = ChatOpenAI(    #     model="mistral-small-latest",    #     api_key=os.getenv("MISTRAL_API_KEY"),    #     temperature=0.7,    #     base_url="https://api.mistral.ai/v1"    # )    


直接利用LLM进行对话

result = llm.invoke("一句话介绍下上海")print(result.content)
# 回答"上海,国际大都市,东方明珠,经济金融中心。"


实践2-角色限定-提示词模版

接下来使用提示词模板对提示词进行扩充和限定。


导入对应python包

from langchain_core.prompts import PromptTemplate


设定LLM角色模板

# 设定模板template = """    你是一个乐于助人的助手。仅根据以下上下文回答问题。    如果你不知道答案,就说 “我不知道”。    上下文:{context}    问题:{query}    答案:    继续提问"""# PromptTemplate封装prompt_template = PromptTemplate(    input_variables=["context", "query"],template=template)# 自定义变量字段插入context = "Python 是一种解释型、动态类型的高级编程语言。"query = "Python 是怎么分类的?"formatted = prompt_template.format(context=context, query=query)


LLM进行对话

result = llm.invoke(formatted)print(result.content)
# 回答"""Python 是一种解释型、动态类型的高级编程语言。根据这个上下文,Python 可以被分类为:
1. 解释型语言:Python 代码在运行时被逐行解释执行,不需要编译成机器码。2. 动态类型语言:Python 在运行时检查变量的类型,而不是在编译时。3. 高级编程语言:Python 提供了丰富的库和抽象,使得开发者可以不必处理底层的细节,专注于解决问题本身。
请问您还有其他问题吗?"""


实践3-链式调用-LLMChain


接上一个代码样例,Langchain最新版本可以使用 | 改造chain的写法(旧版本需要导入LLMChain)

llm_chain = prompt_template | llm


执行结果

result = llm_chain.invoke({'context': context, 'query':query})print(result.content)


也可以多个chain组合调用,先导入python包

from langchain.chains import LLMChainfrom langchain.chains import SimpleSequentialChain


组合多个chain完成特定任务(实测使用|会报错)

# Chain A: 翻译成英文chain1 = LLMChain(llm=llm, prompt=PromptTemplate.from_template("翻译成英文: {text}"))
# Chain B: 用英文写一封邮件chain2 = LLMChain(llm=llm, prompt=PromptTemplate.from_template("用这句话写封邮件: {text}"))
# 串联 Chain A -> Chain Bpipeline = SimpleSequentialChain(chains=[chain1, chain2])
# 一句话搞定print(pipeline.invoke({"input""请帮我告诉老板我今天晚点到"}))
# 回答""" Subject: Urgent: Informing of My Evening DelayDear [Boss's Name],I hope this email finds you well. I am writing to inform you that I will be unavoidably late this evening. Due to [briefly explain the reason for the delay], I am unable to arrive at the office on time. I sincerely apologize for any inconvenience this may cause and appreciate your understanding in this matter.Please help me convey my apologies to the boss. I will make every effort to minimize the delay and will be in touch as soon as I am back in the office.Thank you for your assistance.Best regards,[Your Name]"""


实践4-Agent-构建智能体

接下来实现一个基础版智能体。


引入Python包

# 提示词模板from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder# Agent构建与执行from langchain.agents import AgentExecutor, create_openai_tools_agent# Tool工具调用from langchain.tools import Tool


自定义一个“科普介绍”工具函数

# 写一个工具函数def  get_introduction(topic:  str) ->  str:    """ 获取关于某个主题的详细介绍 """    return  f"这是关于{topic}的详细介绍"
# 将函数封装成Tool,放在tools列表tools = [    Tool(        name="get_introduction",        func=get_introduction,        description="""用于获取关于某个主题的详细介绍"""    )]


创建Agent提示词模板

# 创建Agent提示模板prompt = ChatPromptTemplate.from_messages([    ("system",  "你是一个有帮助的助手"),    ("user",  "{input}"),    MessagesPlaceholder(variable_name="agent_scratchpad"),])


创建Agent,获取用户输入并回答

agent = create_openai_tools_agent(llm, tools, prompt)agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)user_input = input("请输入您想查询的主题:")result = agent_executor.invoke({"input": user_input})print(result["output"])


执行提问并回答

输入:""" 请输入您想查询的主题:LLM """回答:"""LLM是“大型语言模型”(Large Language Model)的缩写,它是一种基于人工智能的技术,能够理解和生成人类语言。这类模型通常由数以亿计的参数组成,能够通过大量的文本数据进行训练,从而学会语言的模式和结构。LLM的主要特点包括:1. **强大的语言理解能力**:LLM能够理解复杂的语言结构,包括语法、语义和上下文。2. **文本生成能力**:LLM可以生成连贯、有逻辑的文本,包括文章、对话、代码等。3. **多语言支持**:许多LLM能够处理多种语言,这使得它们在全球化环境中非常有用。4. **持续学习**:LLM可以通过不断学习新的数据来提高其性能。LLM在多个领域都有应用,如自然语言处理、机器翻译、文本摘要、问答系统等。常见的LLM包括GPT-3、BERT、LaMDA等。"""


实践5-工具扩展-联网搜索

除了给Agent自定义工具外,langchain_community.tools中内置了丰富的工具,我们选取Tavily来实现联网搜索。

先去官网获取API_KEY并写入.env文件中:

https://app.tavily.com/home


引入Python包

from langchain_community.tools.tavily_search importTavilySearchResults


新增工具列表

tools = [        Tool(                name="get_introduction",                func=get_introduction,                description="""用于获取关于某个主题的详细介绍"""        ),     # 增加新的一行       TavilySearchResults(max_results=3) # 返回3条搜索结果]


执行提问并回答

输入:""" 请输入您想查询的主题:搜一下今天的日期 """回答:"""Invoking:     `tavily_search_results_json` with `{'query': '今天日期'}`[{'title': "日期今天Today'sDate365",   'url': 'http://zh.todaysdate365.com/',   'content': '今天的日期是: 星期一 2025 六月23 .',   'score': 0.79254496 },   ... {'title': '今天的日期',   'url': 'https://todaysdatenow.com/zh-CN/',   'content': '# 今天的日期\n\n',   'score': 0.31624308}]今天的日期是2025年6月23日。"""


实测下来tavily的搜索效果并不好,可以通过更改最大返回的相关结果进行一定改善

TavilySearchResults(max_results=10)


实践6-Memory-记忆功能

接下来通过记忆模块增加LLM的上下文理解能力。


引入Python包

from langchain.memory import ConversationBufferMemory


更改提示词,将chat_history插入

prompt = ChatPromptTemplate.from_messages([        ("system", "你是一个有帮助的助手"),    # 新增对话历史        MessagesPlaceholder(variable_name="chat_history"),    ("user", "{input}"),        MessagesPlaceholder(variable_name="agent_scratchpad")])


增加Memory组件

memory = ConversationBufferMemory(    memory_key="chat_history"    return_messages=True)
# 为agent增加memoryagent_executor = AgentExecutor(    agent=agent,    # 新增memory     memory=memory,     tools=tools,     verbose=True)


新增二次对话逻辑:

user_input = input("请输入您想查询的主题:")result = agent_executor.invoke({"input": user_input})print(result["output"])
# 新增第二次对话user_input = input("请继续提问:")result = agent_executor.invoke({"input": user_input})print(result["output"])


执行提问并回答

输入:""" 请输入您想查询的主题:怎么快速学习LLM """回答:"""快速学习大型语言模型(LLM)需要系统的方法和持续的努力。以下是一些建议:1. **基础知识学习**   - **数学基础**:熟悉线性代数、概率论和统计学等基础数学知识。   - **编程技能**:掌握至少一种编程语言,如Python,因为它是机器学习领域的主流语言。   - **机器学习基础**:了解机器学习的基本概念,如监督学习、无监督学习、强化学习等。2. **理论理解**   - **深度学习**:深入研究深度学习的基本原理,特别是神经网络和自然语言处理(NLP)。   - **LLM原理**:了解LLM的工作原理,包括预训练、微调、模型架构等。3. **实践操作**   - **实验**:通过实际操作来加深理解。可以使用TensorFlow、PyTorch等框架进行实验。   - **开源项目**:参与开源项目,如Hugging Face的Transformers库,可以让你更深入地了解LLM。4. **资源学习**   - **在线课程**:参加在线课程,如Coursera、edX上的NLP和深度学习课程。   - **书籍**:阅读相关书籍,如《深度学习》(Goodfellow et al.)、《自然语言处理综论》(Jurafsky and Martin)等。5. **社区交流**   - **加入社区**:加入相关的技术社区,如GitHub、Stack Overflow、Reddit等,与其他开发者交流。   - **参加会议**:参加机器学习和NLP相关的会议和研讨会。6. **持续更新**   - **关注最新研究**:LLM是一个快速发展的领域,需要持续关注最新的研究成果和技术动态。   - **实践与反思**:在实践中不断尝试和反思,总结经验教训。7. **工具和库**   - **熟悉工具**:熟悉如Jupyter Notebook、Git等工具,以及Hugging Face的Transformers库等。通过上述方法,你可以系统地学习LLM,并在实践中不断提高自己的技能。记住,持续学习和实践是关键。"
二次输入:"""请继续提问:关注最新研究有什么方式"""回答:"""关注最新研究是保持知识更新和跟进领域前沿的重要方式。以下是一些有效的方法来关注LLM(大型语言模型)和相关领域的最新研究:1. **学术期刊和会议**   - **订阅期刊**:订阅如《自然》(Nature)、《科学》(Science)、《人工智能》(Artificial Intelligence)、《机器学习》(Journal of Machine Learning Research)等顶级学术期刊。   - **参加会议**:参加国际会议,如NeurIPS、ICML、ACL(Association for Computational Linguistics)、EMNLP(Empirical Methods in Natural Language Processing)等,这些会议通常会发布最新的研究成果。2. **在线平台**   - **arXiv.org**:这是一个预印本服务器,可以让你免费获取最新的研究论文。   - **Google Scholar**:使用Google Scholar搜索相关主题,可以找到最新的论文和引用。   - **ResearchGate**:一个学术社交网络平台,研究人员可以分享他们的论文和研究成果。3. **社交媒体和论坛**   - **Twitter**:关注相关领域的专家、研究机构和期刊的官方账号,获取最新的研究动态。   - **Reddit**:加入如r/MachineLearning、r/NLP等Reddit社区,参与讨论和分享。   - **LinkedIn**:关注行业专家和公司的LinkedIn页面,了解他们的最新动态。4. **专业组织和机构**   - **加入专业组织**:如AAAI(Association for the Advancement of Artificial Intelligence)、IEEE(Institute of Electrical and Electronics Engineers)等,这些组织会发布最新的研究信息和会议通知。   - **关注研究机构**:关注如Google AI、Facebook AI Research、DeepMind等顶级研究机构的官方网站和博客。5. **学术会议和研讨会**   - **在线研讨会**:参加在线研讨会和讲座,许多会议和研讨会现在提供在线观看选项。   - **直播和回放**:观看重要会议的直播或回放,如NeurIPS、ICML的在线直播。6. **学术新闻和博客**   - **学术新闻网站**:如TechCrunch、Wired、The Verge等,它们经常报道最新的科技和学术研究。   - **专业博客**:阅读如Distill、AI Daily、The Morning Paper等博客,它们会总结和解读最新的研究论文。通过结合上述方法,你可以有效地跟踪LLM和相关领域的最新研究动态。"""


实践总结

实践中展示了 LangChain 的几个核心概念:

LLM - 多种模型支持

llm = ChatOpenAI(model="deepseek-chat", ...)

Prompts - 结构化提示

prompt_template = PromptTemplate(...)...prompt = ChatPromptTemplate.from_messages([...])

Chains-链式调用

llm_chain = prompt | llmllm_chain = LLMChain(llm=llm, prompt=prompt)

Agent - 智能代理

agent = create_openai_tools_agent(llm, tools, prompt)

Tools - 自定义工具+内置工具

tools = [Tool(name="get_introduction", ...)]

Memory - 记忆组件

memory = ConversationBufferMemory(    memory_key="chat_history",     return_messages=True)


从LLM简单对话,到LLM+提示+工具+Memory 的Agent,本实践最小限度的实现了langchain的开发过程,感兴趣的同学可以也尝试实现一下。

本次实践可以再次加深我们对于复杂Agent的理解:本质上是基于 LLM,在用户和大模型之间串联工具,根据更精细化的需求,可以实现更准确和垂直的目的,提高用户在某领域的AI使用上专业和便捷程度。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询