AI编程实战
文章平均质量分 89
聚焦于人工智能与编程的交叉领域,摒弃空泛理论,直击实战应用。我们将一起动手,从零开始,探索如何利用最新的AI技术解决实际编程问题,打造智能应用。
火云牌神
20年以上工作经验,担当过Linux操作系统、嵌入式软件、游戏开发、企业级应用开发等技术工作。
擅长系统性逻辑思维,长于解决复杂的系统性软件问题,编写比较复杂稳定的底层软件系统。
最近几年专注于大数据和人工智能技术领域的研究。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
本地大模型编程实战(39)MCP实战演练
本文将使用`Visual Studio Code`写一个`MCP服务端`和`MCP客户端`,演示**MCP**的基本功能。原创 2025-12-11 11:56:42 · 1220 阅读 · 0 评论 -
本地大模型编程实战(38)实现一个通用的大模型客户端
由于大部分AI平台提供的API/接口都兼容 `OpenAI API` ,所以我们可以使用 `OpenAI SDK` 实现通用的 `LLM(大语言模型)` 客户端。原创 2025-12-10 09:07:39 · 1083 阅读 · 0 评论 -
本地大模型编程实战(37)使用知识图谱增强RAG(3)
本文将简单介绍如何使用 提升 **RAG(Retrieval Augmented Generation,检索增强生成)** 的问答效果。原创 2025-09-18 21:42:53 · 1156 阅读 · 0 评论 -
本地大模型编程实战(36)使用知识图谱增强RAG(2)生成知识图谱
本文将简单介绍如何把文本生成 **知识图谱**(Knowledge Graph)。具体来说,是使用开源项目 [AutoSchemaKG](https://github.com/HKUST-KnowComp/AutoSchemaKG) 生成 **GraphML** 。 **GraphML** 是 XML(Extensible Markup Language) 格式的文件,可以使用 **NetworkX** 等框架轻松处理这种格式的文件。原创 2025-09-18 21:40:02 · 899 阅读 · 0 评论 -
本地大模型编程实战(35)使用知识图谱增强RAG(1)知识图谱简介
知识图谱的主要特点是建立了“知识”之间的关联,所以它的强项是 **推理** ,**HugeGraph** 、**NetworkX** 支持 **PageRank**(在后面RAG中会用到)、k-短路、LPA(标签传播算法)、Jaccard 相似度 等算法。有了这些支持,它在 搜索引擎 、智能问答**RAG**(Retrieval Augmented Generation,检索增强生成) 等领域都有广泛的应用,可以明显提升这些领域应用的智能化水平。原创 2025-09-17 17:26:24 · 851 阅读 · 0 评论 -
本地大模型编程实战(34)使用faiss实现语义检索
**FAISS**(Facebook AI Similarity Search)是 Facebook AI 研究院开发的一款高效的向量相似性搜索库,专门用于优化大规模高维向量的近邻搜索任务,广泛应用于语义检索、图像检索、推荐系统等场景。 本文将详细介绍如何使用 **FAISS** 实现语义检索。具体内容包括: - 将内容矢量化并保存为索引 - 在保存索引的同时,保存每条信息的相关信息metadata - 通过矢量库进行语义检索原创 2025-09-17 17:23:46 · 1582 阅读 · 0 评论 -
使用NetworkX查询GraphML图数据
本文使用 **Nextworkx** 实现查询 **GraphML** 图数据的功能。 - 查询根节点,支持分页 - 查询某个节点的子图结构:即它的子节点以及子节点对应的边和下一级节点原创 2025-09-16 14:51:42 · 538 阅读 · 0 评论 -
本地大模型编程实战(33)用SSE实现大模型的流式输出
我们使用大语言模型**qwen3**实现翻译功能。它可以自动识别源语言,就可以翻译为目标语种。 > 像千问这种大模型是基于多语言训练的,所以它支持中文、英文、法文、西班牙等多个语种的翻译。原创 2025-09-15 09:09:14 · 1190 阅读 · 0 评论 -
在windows系统中安装图数据库NEO4J
>`Neo4j`是一个高性能的`NOSQL`图形数据库,它将结构化数据存储在网络上而不是表中。 >`Neo4j`也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。本文讲述了在如何在`windows`系统中安装`NEO4J`。原创 2025-05-09 14:20:54 · 723 阅读 · 0 评论 -
本地大模型编程实战(32)用websocket显示大模型的流式输出
本文将模仿后端流式输出文字,前端一块一块的显示文字。主要的实现路径是:- `LLM` 采用 `qwen3` ,使用 `stream` 方式输出 - 后端使用 `langchain` 框架- 使用 `fastapi` 实现后端接口 - 前后端之间使用 **`websocket`** 长连接通信- 前端使用一个简单的 `html5` 网页做演示原创 2025-05-02 17:45:48 · 1748 阅读 · 0 评论 -
本地大模型编程实战(31)用Map-Reduce从大文本中提取摘要
在执行从文本中提取摘要的任务时,难免遇到大文本的情况:文本的长度超出了 `LLM(大语言模型)` 的token限制。 `LangGraph` 提供了 `map-reduce` 工作流,它先把大文本拆成小文档分别提取摘要,然后再提炼/压缩提取的摘要,直到最后提取的摘要的token长度满足既定要求。原创 2025-05-01 10:19:01 · 855 阅读 · 0 评论 -
本地大模型编程实战(30)从文本提取摘要
本文将演练如何使用 `LLM(大语言模型)` 提取文本摘要。原创 2025-05-01 10:00:18 · 581 阅读 · 0 评论 -
本地大模型编程实战(29)查询图数据库NEO4J(2)
上一篇文章 [用大语言模型LLM查询图数据库NEO4J(1)]介绍了使用`GraphQACypherChain`查询`NEO4J`。用它实现简单快捷,但是不容易定制,在生产环境中可能会面临挑战。本文将基于`langgraph` 框架,用`LLM(大语言模型)`查询图数据库`NEO4J`。它可以定义清晰复杂的工作流,能应对比较复杂的应用场景。原创 2025-04-29 16:22:58 · 1300 阅读 · 0 评论 -
本地大模型编程实战(28)查询图数据库NEO4J(1)
本文将基于`langchain` 框架,用`LLM(大语言模型)`查询图数据库`NEO4J`。原创 2025-04-29 16:05:47 · 825 阅读 · 0 评论 -
本地大模型编程实战(27)初探langgraph的流式输出
对于 `LLM(大语言模型)`,流式传输已成为一种越来越受欢迎的功能。其理念是在 `LLM` 生成令牌时就快速返回,而不是等待创建完整响应后再返回全部内容。对于简单的场景,流式传输实际上非常容易实现,但当涉及到智能体之类的应用时,它会变得复杂,这些智能体有自己的运行逻辑,可能会阻止我们尝试进行流式传输。本文将探讨 `langchain` 的流式输出,后面将实现**智能体最终结果的流式输出**。原创 2025-02-28 16:38:20 · 1999 阅读 · 0 评论 -
本地大模型编程实战(26)用langgraph实现基于SQL数据构建的问答系统(5)
本文将将扩展上一篇文章完成的 `langgraph` 链,继续使用基于 `langgraph` 链 ,对结构化数据库 `SQlite` 进行查询的方法。该系统建立以后,我们不需要掌握专业的 `SQL` 技能,可以用自然语言询问有关数据库中数据的问题并返回答案。主要完善一下两点内容: - 自动记录消息历史- 增加人工审核环节,防止 `LLM(大语言模型)` 运行危险的SQL语句原创 2025-02-28 16:32:10 · 1087 阅读 · 0 评论 -
本地大模型编程实战(25)用langgraph实现基于SQL数据构建的问答系统(4)
本文将演练使用基于 `langgraph` 链 ,对结构化数据库 `SQlite` 进行查询的方法。该系统建立以后,我们不需要掌握专业的 `SQL` 技能,可以用自然语言询问有关数据库中数据的问题并返回答案。 使 `大语言模型(LLM)` 查询结构化数据与非结构化文本数据有所不同。查询非结构化数据时,通常需要将待查询的文本嵌入到向量数据库中;而查询结构化数据的方法则是让 `LLM` 编写和执行 `DSL`(例如 SQL)进行查询。原创 2025-02-26 09:23:02 · 1323 阅读 · 0 评论 -
本地大模型编程实战(24)用智能体(Agent)实现智能纠错的SQL数据库问答系统(3)
本文将实现这样一个 `智能体(Agent)` :- 可以使用自然语言对 `SQLite` 数据库进行查询。即:用户用自然语言提出问题,智能体也用自然语言根据数据库的查询结果回答问题。- 增加一个自动对查询中的专有名词进行纠错的工具,这将明显提升查询的准确性。原创 2025-02-26 09:19:21 · 1374 阅读 · 0 评论 -
本地大模型编程实战(23)用智能体(Agent)实现基于SQL数据构建问答系统(2)
本文将用 `智能体(Agent)` 实现对 `SQLite` 数据库的查询:用户用自然语言提出问题,智能体也用自然语言根据数据库的查询结果回答问题。原创 2025-02-25 14:39:02 · 1474 阅读 · 0 评论 -
本地大模型编程实战(22)用langchain实现基于SQL数据构建问答系统(1)
使 `LLM(大语言模型)` 系统能够查询结构化数据与非结构化文本数据在性质上可能不同。后者通常生成可在向量数据库中搜索的文本,而结构化数据的方法通常是让 `LLM` 编写和执行 `DSL`(例如 SQL)中的查询。 我们将演练在使用基于 `langchain` 链 ,在结构化数据库 `SQlite` 中的数据上创建问答系统的基本方法,该系统建立以后,我们用自然语言询问有关数据库中数据的问题并返回自然语言答案。原创 2025-02-25 14:36:48 · 1536 阅读 · 0 评论 -
本地大模型编程实战(21)支持多参数检索的RAG(Retrieval Augmented Generation,检索增强生成)(5)
在实现 `RAG(Retrieval Augmented Generation,检索增强生成)` 系统的时候,在检索(retrieve)知识库时通常一个参数。 本文将演练更复杂一点的情况:通过两个参数进行知识库的检索。为此会在 `langgraph`链 中增加一个 `analyze_query` 节点,它用来基于用户问题推理检索的参数。原创 2025-02-24 11:23:12 · 1012 阅读 · 0 评论 -
本地大模型编程实战(20)用langgraph和智能体实现RAG(Retrieval Augmented Generation,检索增强生成)(4)
上一篇文章我们演练了一个 [用 `langgraph` 实现的 `RAG(Retrieval Augmented Generation,检索增强生成)` 系统]。本文将要在此基础上,增加自动记录聊天历史的功能,另外,我们还将使用一个 `Agent(智能体)` 来实现几乎同样的功能,我们来一起体会一下用 `langgraph` 和 `Agent(智能体)` 实现 `RAG系统` 的区别。原创 2025-02-24 11:18:48 · 2321 阅读 · 1 评论 -
本地大模型编程实战(19)RAG(Retrieval Augmented Generation,检索增强生成)(3)
上一篇文章我们演练了一个 [用 `langgraph` 实现的 `RAG(Retrieval Augmented Generation,检索增强生成)` 系统](http://wfcoding.com/articles/practice/0318/)。本文将要创建的系统将更加智能:如果在知识库中未找到靠谱的文档,则用 `LLM(大语言模型)` 自身的能力弥补。原创 2025-02-16 20:59:00 · 1461 阅读 · 0 评论 -
本地大模型编程实战(18)RAG(Retrieval Augmented Generation,检索增强生成)(2)
本文将使用 `langgraph` 实现一个简单的 `RAG(Retrieval Augmented Generation,检索增强生成)` 系统。> 使用 `qwen2.5` 、 `deepseek-r1` 以及 `llama3.1` 做实验,用 `shaw/dmeta-embedding-zh` 做中文嵌入和检索。原创 2025-02-16 16:31:20 · 1083 阅读 · 0 评论 -
本地大模型编程实战(17)RAG(Retrieval Augmented Generation,检索增强生成)(1)
本文将用实际代码演练一个简单的 `RAG(Retrieval Augmented Generation,检索增强生成)` 系统。> 我们将使用 `qwen2.5` 、 `deepseek-r1` 以及 `llama3.1` 做实验,用 `shaw/dmeta-embedding-zh` 做中文嵌入和检索。原创 2025-02-16 11:56:11 · 1264 阅读 · 0 评论 -
本地大模型编程实战(16)初探智能体Agent(3)
本文将基于上一篇文章完善 `Agent(智能体)` ,主要完善的功能有: - 跟踪 `Agent(智能体)` 的执行过程- 记录消息历史> 此次我们使用 `qwen2.5` 做 `LLM(大语言模型)` 驱动 `Agent(智能体)` ,使用 `shaw/dmeta-embedding-zh` 做中文嵌入和检索。<!--more-->## 准备在正式开始撸代码之前,需要准备一下编程环境。1. 计算机 本文涉及的所有代码可以在**没有显存**的环境中执行。 我使用的机器配置为:原创 2025-02-14 20:39:59 · 1154 阅读 · 0 评论 -
本地大模型编程实战(15)初探智能体Agent(2)
在上一篇文章中,我们实践了如何使用 `langchain` 创建一个简单的 `ReAct Agent(智能体)`,这次我们升级一下玩法:实现一个可以调用两个 工具 的智能体。 其中一个工具用户查询天气预报,另外一个工具用来查询知识库,实际上该工具实现了 `RAG(Retrieval Augmented Generation,检索增强生成)`。原创 2025-02-14 20:38:02 · 1047 阅读 · 0 评论 -
本地大模型编程实战(14)初探智能体Agent(1)
在前面的文章中,我们了解了 `LLM(大语言模型)` 如何使用 `tool(工具)` ,现在我们开始进一步,初探 `Agent(智能体)` 的玩法。 其中的 `tool(工具)` 用于从矢量数据库中查询信息,这种方式在 `RAG(Retrieval Augmented Generation,检索增强生成)` 也很常用。在这种场景中,能否准确的查询出有用信息很关键,为此我们本次将使用多种大模型进行对比演练。原创 2025-02-11 19:04:01 · 1198 阅读 · 1 评论 -
本地大模型编程实战(13)与外部工具交互(4)
在使用 `LLM(大语言模型)` 调用工具方法时,可能会在运行时才会将类似 用户ID 的数值传递给工具。 大多数情况下,此类值不应由 `LLM` 控制。允许 `LLM` 控制 用户ID **可能会导致安全风险**。 相反,`LLM` 应该只控制本应由 `LLM` 控制的工具参数,而其他参数(如用户ID)应由应用程序逻辑固定。本文将向您展示:如何防止模型生成某些工具参数并**在运行时直接注入**它们。原创 2025-02-11 18:57:27 · 822 阅读 · 0 评论 -
本地大模型编程实战(12)与外部工具交互(3)
本文将实践如何在 `LLM(大语言模型)` 调用工具函数时进行审核,即由人来确定是否应该调用工具函数。> 本次使用 `llama3.1` 和 `MFDoom/deepseek-r1-tool-calling:7b` 进行演练。 `deepseek-r1` 不支持 `langchain` 的 bind_tools 方法。原创 2025-02-09 11:26:28 · 780 阅读 · 0 评论 -
本地大模型编程实战(11)与外部工具交互(2)
在使用 `LLM(大语言模型)` 时,经常需要调用一些自定义的工具方法完成特定的任务,比如:执行一些特殊算法、查询天气预报、旅游线路等。 很多大模型都具备使用这些工具方法的能力,`Langchain` 也为这些调用提供了便利。原创 2025-02-09 11:24:31 · 2313 阅读 · 0 评论 -
本地大模型编程实战(10)与外部工具交互(1)
某些模型能够进行工具方法调用:生成用户自定义的方法的签名并调用它。一般来说,此交互过程主要包含下面几个步骤:- `LLM(大语言模型)` 根据用户的问题推理生成调用工具方法的名称和参数- 调用工具,返回简单的结果- 再次调用 `LLM` ,生成自然流畅的回答原创 2025-02-07 17:47:55 · 574 阅读 · 0 评论 -
本地大模型编程实战(09)自制聊天机器人(3)
本文将实现一个比较完善的聊天机器人的主要功能。包括:- 使用 `LangGraph` 构建聊天机器人- 自动裁剪聊天历史- 管理聊天会话的方法- 以流的方式输出回复原创 2025-02-07 17:41:31 · 2328 阅读 · 0 评论 -
本地大模型编程实战(08)自制聊天机器人(2)
本文将演示使用大语言模型自制聊天机器人。主要的内容有:- 使用 `LangGraph` 进一步完善聊天机器人- 使用提示词改变 `LLM` 的能力原创 2025-02-05 13:56:19 · 595 阅读 · 0 评论 -
本地大模型编程实战(07)自制聊天机器人(1)
本文将演示使用大语言模型自制聊天机器人。主要的内容有:- 如何让机器人具有记忆- 如何使用 `langgraph` 自动记录聊天历史原创 2025-02-05 13:53:00 · 967 阅读 · 0 评论 -
本地大模型编程实战(06)从文本中提取重要信息(2)
本文将演示使用大语言模型从文本中提炼结构化信息。这次我们不直接使用提示词,而是使用大模型的 `few-shot prompting` 特性,即使用很少的例子来引导大模型做推理。 我们将用 `llama3.1` 和 `deepseek` 做一个简单的对比。 > 由于 `langchain` 可能对不同大模型支持程度不同,不同大模型的特点也不同,所以这个对比并不能说明哪个模型更好。原创 2025-02-04 11:49:22 · 996 阅读 · 0 评论 -
本地大模型编程实战(05)从文本中提取重要信息(1)
本文将演示使用大语言模型从文本中提炼结构化信息。 我们将用 `llama3.1` 和 `deepseek` 做一个简单的对比。> 由于 `langchain` 可能对不同大模型支持程度不同,不同大模型的特点也不同,所以这个对比并不能说明哪个模型更好。原创 2025-02-04 11:46:06 · 904 阅读 · 0 评论 -
本地大模型编程实战(04)给文本自动打标签
使用本地大模型可以根据需要给文本打标签,本文介绍了如何基于 `langchain` 和本地部署的大模型给文本打标签。> 本文使用 `llama3.1` 作为本地大模型,它的性能比非开源大模型要查一下,不过在我们可以调整提示词后,它也基本能达到要求。原创 2025-01-27 19:54:26 · 1154 阅读 · 0 评论 -
本地大模型编程实战(03)语义检索(2)
本文描述了如何使用 `Chroma` 对csv数据进行矢量化,并且将矢量存储在硬盘中,未来查询矢量数据时,直接从硬盘中读取矢量数据进行查询。 另外,如果数据量大一些,矢量化数据是很花时间的,我们将使用进度条显示嵌入csv的进度。原创 2025-01-26 23:40:46 · 943 阅读 · 0 评论 -
本地大模型编程实战(02)语义检索(1)
本文描述了如何使用 `langchain` 和 `大语言模型` 以及 `矢量数据库` 完成pdf内容的语义检索。 在对内容进行矢量化时使用了 `nomic-embed-text`,这个模型个头小,英文嵌入效果不错。 后面还将涉及到以下内容:- 文档和文档加载器- 文本分割器- 嵌入- 向量存储和检索器原创 2025-01-25 19:32:14 · 1020 阅读 · 0 评论
分享