Langchain 功能介绍和使用示例演示

以下是 LangChain 的功能介绍及典型使用示例:

LangChain 核心功能介绍

  1. 模型 I/O

    • 功能概述:提供统一的大语言模型接口,支持多种 LLM,并通过提示词模板动态管理输入输出[2][4]。
    • 关键特性
      • 模型包装器:适配不同平台的 LLM,简化 API 调用[2]。
      • 输出解析器:从模型输出中提取结构化信息[2][4]。
      • 提示词管理:支持模板化输入,便于动态调整[3][4]。
  2. 数据增强与检索

    • 功能概述:连接外部数据源,实现文档加载、转换、存储和查询[2][3]。
    • 关键特性
      • 文档加载器:支持多种格式(PDF、CSV、SQL 等)的数据导入[3][4]。
      • 向量存储与检索:通过嵌入技术实现高效数据检索[2][4]。
      • 索引优化:构建适合 LLM 交互的文档索引策略[3]。
  3. 链式调用

    • 功能概述:将多个模型或组件串联为逻辑流程,处理复杂任务[2][3]。
    • 典型应用:多步骤推理、跨模型协作、业务流程自动化[3][4]。
  4. 记忆能力

    • 功能概述:在对话或流程中维护状态,支持历史消息的读取和写入[2][3]。
    • 应用场景:聊天机器人、长期对话系统、上下文感知的任务处理[3][4]。
  5. 代理

    • 功能概述:基于 LLM 的决策能力,动态选择工具或操作序列[2][7]。
    • 典型流程:模型分析任务 → 调用工具 → 观察结果 → 重复直至目标达成[7]。
  6. 回调处理器

    • 功能概述:记录和干预应用运行的各个阶段,用于日志、监控和流处理[2][4]。
    • 用途:调试、性能追踪、实时数据处理[4]。

典型使用示例演示

示例一:文本总结
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains.summarize import load_summarize_chain

# 初始化LLM模型
llm = OpenAI(temperature=0, model_name='gpt-3.5-turbo', openai_api_key="your_api_key")

# 定义短文本总结模板
template = """
%INSTRUCTIONS:
Please summarize the following piece of text.
Respond in a manner that a 5 year old would understand.
%TEXT:
{text}
"""
prompt = PromptTemplate(input_variables=["text"], template=template)

# 对长文本进行分块处理
text_splitter = RecursiveCharacterTextSplitter(separators=["\n\n", "\n"], chunk_size=5000, chunk_overlap=350)
with open('wonderland.txt', 'r') as file:
    text = file.read()
docs = text_splitter.create_documents([text])

# 使用 map_reduce 策略总结长文本
chain = load_summarize_chain(llm=llm, chain_type='map_reduce')
summary = chain.run(docs)
print(summary)
示例二:工具调用与多轮对话
from langchain_core.tools import tool
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, AIMessage, ToolMessage
import json

# 定义工具函数
@tool
def get_weather(city: str) -> str:
    return f"{city} 今天天气晴,28°C,湿度30%"

@tool
def add(a: int, b: int) -> int:
    return a + b

# 初始化模型并绑定工具
llm = ChatOpenAI(base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", api_key="your_secret_key", model="qwen-turbo", temperature=0)
llm_with_tools = llm.bind_tools([get_weather, add])

# 多轮对话循环
messages = [AIMessage(content="你好!我是你的AI助手,可以帮你查天气、做加法,有什么可以帮你的?")]
available_tools = {"get_weather": get_weather, "add": add}

while True:
    user_input = input("你:").strip()
    if user_input.lower() in {"exit", "quit", ""}:
        print("再见!")
        break
    messages.append(HumanMessage(content=user_input))
    response = llm_with_tools.invoke(messages)
    if response.tool_calls:
        print("检测到工具调用:")
        print(json.dumps(response.tool_calls, indent=2, ensure_ascii=False))
        messages.append(response)
        for tool_call in response.tool_calls:
            tool_func = available_tools.get(tool_call["name"])
            if tool_func:
                tool_result = tool_func.invoke(tool_call)
                messages.append(tool_result)
                print(f"执行 {tool_call['name']}{tool_result.content}")
    else:
        messages.append(response)
        print("AI:", response.content)
示例三:文档问答
from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.retrievers import VectorStoreRetriever
from langchain.chains import RetrievalQA

# 加载文档并创建向量库
loader = PyPDFLoader("example.pdf")
pages = loader.load()
embeddings = OpenAIEmbeddings(api_key="your_api_key")
vectorstore = FAISS.from_documents(pages, embeddings)
retriever = VectorStoreRetriever(vectorstore)

# 构建问答链
qa_chain = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=retriever)
answer = qa_chain.run("为什么天空是蓝色的?")
print(answer)

以上便是 LangChain 的核心功能及典型使用示例。通过灵活组合各模块,可快速构建从简单到复杂的 LLM 应用。更多完整示例可参考官方文档及社区资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值