LangChain
LangChain 是一個旨在為開發者提供一套工具和程式介接,以便更容易、更有效地利用大型語言模型(LLM)的開源開發框架,專注於情境感知和推理。它包含多個組件,如 Python 和 JavaScript 的函式庫、快速部署的模板、用於開發REST API的 LangServe,以及用於除錯和監控的 LangSmith。LangChain 簡化了開發、生產和部署過程,提供與語言模型互動、執行檢索策略和輔助建立複雜應用架構的工具。
- Introduction | 🦜️🔗 LangChain
- LangChain是什麼?AI開發者必須了解的LLM開源框架 - ALPHA Camp
- GitHub: https://github.com/langchain-ai/langchain
- Hub: LangSmith (langchain.com)
- 教學:sugarforever/wtf-langchain
LangSmith
LangChain 提供的雲端服務,可用來作程式除錯與監視後端程序,例如 RAG 的檢索資訊過程。
- https://github.com/langchain-ai/langsmith-cookbook
- LangChain 怎麼玩?用 LangSmith 幫忙追查問題 - MyApollo
- 深入LangSmith:如何帮助大模型(LLM)应用从原型到投入生产?【上】 - 文章 - 开发者社区 - 火山引擎
RAG
Using Retrievers in LCEL
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
template = """Answer the question based only on the following context:
{context}
Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
model = ChatOpenAI()
def format_docs(docs):
return "\n\n".join([d.page_content for d in docs])
chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| model
| StrOutputParser()
)
chain.invoke("What did the president say about technology?")
常用函式
格式化輸出
# Helper function for printing docs
def pretty_print_docs(docs):
print(
f"\n{'-' * 100}\n".join(
[f"Document {i+1}:\n\n" + d.page_content for i, d in enumerate(docs)]
)
)