{"data":{"slug":"liaokongvfx-langchain-chinese-getting-started-guide","name":"LangChain-Chinese-Getting-Started-Guide","tagline":"LangChain 的中文入门教程","github_url":"https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide","owner":"liaokongVFX","repo":"LangChain-Chinese-Getting-Started-Guide","owner_avatar_url":"https://avatars.githubusercontent.com/u/13622183?v=4","primary_language":null,"stars":9061,"forks":711,"topics":["aigc","chatgpt","langchain","openai","openai-api"],"archived":false,"github_pushed_at":"2026-04-22T16:31:50+00:00","maintenance_label":"Steady","url":"https://www.graphcanon.com/tools/liaokongvfx-langchain-chinese-getting-started-guide","markdown_url":"https://www.graphcanon.com/tools/liaokongvfx-langchain-chinese-getting-started-guide.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/liaokongvfx-langchain-chinese-getting-started-guide","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=liaokongvfx-langchain-chinese-getting-started-guide","description":"LangChain 的中文入门教程","homepage_url":null,"license":null,"open_issues":2,"watchers":46,"ai_summary":null,"readme_excerpt":"# LangChain 中文入门教程\n\n> 为了便于阅读，已生成gitbook：[https://liaokong.gitbook.io/llm-kai-fa-jiao-cheng/](https://liaokong.gitbook.io/llm-kai-fa-jiao-cheng/)\n>\n> github地址：[https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide](https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide)\n>\n> 另外一篇[《Model Context Protocol(MCP) 编程极速入门》](https://github.com/liaokongVFX/MCP-Chinese-Getting-Started-Guide)\n> \n> 《LangChain技术解密：构建大模型应用的全景指南》现已出版：[https://item.jd.com/14598210.html](https://item.jd.com/14598210.html)\n> \n\n> 因为langchain库一直在飞速更新迭代，但该文档写与4月初，并且我个人精力有限，所以colab里面的代码有可能有些已经过时。如果有运行失败的可以先搜索一下当前文档是否有更新，如文档也没更新欢迎提issue，或者修复后直接提pr，感谢~\n\n> 加了个 [CHANGELOG](CHANGELOG.md),更新了新的内容我会写在这里，方便之前看过的朋友快速查看新的更新内容\n\n> 如果想把 OPENAI API 的请求根路由修改成自己的代理地址，可以通过设置环境变量 “OPENAI\\_API\\_BASE” 来进行修改。\n>\n> 相关参考代码：[https://github.com/openai/openai-python/blob/d6fa3bfaae69d639b0dd2e9251b375d7070bbef1/openai/\\_\\_init\\_\\_.py#L48](https://github.com/openai/openai-python/blob/d6fa3bfaae69d639b0dd2e9251b375d7070bbef1/openai/\\_\\_init\\_\\_.py#L48)\n>\n> 或在初始化OpenAI相关模型对象时，传入“openai\\_api\\_base” 变量。\n>\n> 相关参考代码：[https://github.com/hwchase17/langchain/blob/master/langchain/llms/openai.py#L148](https://github.com/hwchase17/langchain/blob/master/langchain/llms/openai.py#L148)\n\n## 介绍\n\n众所周知 OpenAI 的 API 无法联网的，所以如果只使用自己的功能实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube 视频进行问答等等的功能肯定是无法实现的。所以，我们来介绍一个非常强大的第三方开源库：`LangChain` 。\n\n> 文档地址：https://python.langchain.com/en/latest/\n\n这个库目前非常活跃，每天都在迭代，已经有 22k 的 star，更新速度飞快。\n\nLangChain 是一个用于开发由语言模型驱动的应用程序的框架。他主要拥有 2 个能力：\n\n1. 可以将 LLM 模型与外部数据源进行连接\n2. 允许与 LLM 模型进行交互\n\n> LLM 模型：Large Language Model，大型语言模型\n\n##\n\n## 基础功能\n\nLLM 调用\n\n* 支持多种模型接口，比如 OpenAI、Hugging Face、AzureOpenAI ...\n* Fake LLM，用于测试\n* 缓存的支持，比如 in-mem（内存）、SQLite、Redis、SQL\n* 用量记录\n* 支持流模式（就是一个字一个字的返回，类似打字效果）\n\nPrompt管理，支持各种自定义模板\n\n拥有大量的文档加载器，比如 Email、Markdown、PDF、Youtube ...\n\n对索引的支持\n\n* 文档分割器\n* 向量化\n* 对接向量存储与搜索，比如 Chroma、Pinecone、Qdrand\n\nChains\n\n* LLMChain\n* 各种工具Chain\n* LangChainHub\n\n## 必知概念\n\n相信大家看完上面的介绍多半会一脸懵逼。不要担心，上面的概念其实在刚开始学的时候不是很重要，当我们讲完后面的例子之后，在回来看上面的内容会一下明白很多。\n\n但是，这里有几个概念是必须知道的。\n\n##\n\n### Loader 加载器\n\n顾名思义，这个就是从指定源进行加载数据的。比如：文件夹 `DirectoryLoader`、Azure 存储 `AzureBlobStorageContainerLoader`、CSV文件 `CSVLoader`、印象笔记 `EverNoteLoader`、Google网盘 `GoogleDriveLoader`、任意的网页 `UnstructuredHTMLLoader`、PDF `PyPDFLoader`、S3 `S3DirectoryLoader`/`S3FileLoader`、\n\nYoutube `YoutubeLoader` 等等，上面只是简单的进行列举了几个，官方提供了超级的多的加载器供你使用。\n\n> https://python.langchain.com/docs/how_to/#document-loaders\n\n###\n\n### Document 文档\n\n当使用loader加载器读取到数据源后，数据源需要转换成 Document 对象后，后续才能进行使用。\n\n###\n\n### Text Spltters 文本分割\n\n顾名思义，文本分割就是用来分割文本的。为什么需要分割文本？因为我们每次不管是做把文本当作 prompt 发给 openai api ，还是还是使用 openai api embedding 功能都是有字符限制的。\n\n比如我们将一份300页的 pdf 发给 openai api，让他进行总结，他肯定会报超过最大 Token 错。所以这里就需要使用文本分割器去分割我们 loader 进来的 Document。\n\n###\n\n### Vectorstores 向量数据库\n\n因为数据相关性搜索其实是向量运算。所以，不管我们是使用 openai api embedding 功能还是直接通过向量数据库直接查询，都需要将我们的加载进来的数据 `Document` 进行向量化，才能进行向量运算搜索。转换成向量也很简单，只需要我们把数据存储到对应的向量数据库中即可完成向量的转换。\n\n官方也提供了很多的向量数据库供我们使用。\n\n> https://python.langchain.com/docs/integrations/vectorstores/\n\n###\n\n### Chain 链\n\n我们可以把 Chain 理解为任务。一个 Chain 就是一个任务，当然也可以像链条一样，一个一个的执行多个链。\n\n###\n\n### Agent 代理\n\n我们可以简单的理解为他可以动态的帮我们选择和调用chain或者已有的工具。\n\n执行过程可以参考下面这张图:\n\n\n\n### Embedding\n\n用于衡量文本的相关性。这个也是 OpenAI API 能实现构建自己知识库的关键所在。\n\n他相比 fine-tuning 最大的优势就是，不用进行训练，并且可以实时添加新的内容，而不用加一次新的内容就训练一次，并且各方面成本要比 fine-tuning 低很多。\n\n> 具体比较和选择可以参考这个视频：https://www.youtube.com/watch?v=9qq6HTr7Ocw\n\n##\n\n## 实战\n\n通过上面的必备概念大家应该已经可以对 LangChain 有了一定的了解，但是可能还有有些懵。\n\n这都是小问题，我相信看完后面的实战，你们就会彻底的理解上面的内容，并且能感受到这个库的真正强大之处。\n\n因为我们 OpenAI API 进阶，所以我们后面的范例使用的 LLM 都是以Open AI 为例，后面大家可以根据自己任务的需要换成自己需要的 LLM 模型即可。\n\n当然，在这篇文章的末尾，全部的全部代码都会被保存为一个 colab 的 ipynb 文件提供给大家来学习。\n\n> 建议大家按顺序去看每个例子，因为下一个例子会用到上一个例子里面的知识点。\n>\n> 当然，如果有看不懂的也不用担心，可以继续往后看，第一次学习讲究的是不求甚解。\n\n###\n\n### 完成一次问答\n\n第一个案例，我们就来个最简单的，用 LangChain 加载 OpenAI 的模型，并且完成一次问答。\n\n在开始之前，我们需要先设置我们的 openai 的 key，这个 key 可以在用户管理里面创建，这里就不细说了。\n\n```python\nimport os\nos.environ[\"OPENAI_API_KEY\"] = '你的api key'\n```\n\n然后，我们进行导入和执行\n\n```py\nfrom langchain.llms import OpenAI\n\nllm = OpenAI(model_name=\"text-da","github_created_at":"2023-04-07T13:15:12+00:00","created_at":"2026-07-11T10:52:25.890571+00:00","updated_at":"2026-07-11T10:52:33.993212+00:00","categories":[{"slug":"ai-agents","name":"AI Agents","url":"https://www.graphcanon.com/categories/ai-agents","markdown_url":"https://www.graphcanon.com/categories/ai-agents.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/ai-agents"},{"slug":"vector-databases","name":"Vector Databases","url":"https://www.graphcanon.com/categories/vector-databases","markdown_url":"https://www.graphcanon.com/categories/vector-databases.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/vector-databases"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"}],"tags":[{"slug":"chatgpt","name":"chatgpt"},{"slug":"openai","name":"openai"},{"slug":"openai-api","name":"openai-api"},{"slug":"aigc","name":"aigc"},{"slug":"langchain","name":"langchain"}],"trust":{"provenance":{"is_fork":false,"github_id":624870895,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-11T10:52:31.135Z","maintenance":{"label":"Steady","score":60,"methodology":"github_public_v1","releases_90d":0,"days_since_push":79,"last_release_at":null},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-11T10:52:32.378Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-07-11T10:52:31.903Z"}}}}