2026年2月6日星期五

Building a Text-to-SQL Agent with LangChain 1。2 : Source Code Walkthrough

Summary: This project demonstrates a Text-to-SQL agent using LangChain 1.2. It converts natural language queries into safe MySQL queries via a custom toolset (ListTablesTool, TableSchemaTool, etc.), enforcing a workflow: list tables, check schema, generate/validate SELECT queries, and execute. Code covers agent setup, security checks, and database utilities.

     langchain更新了1.2版本,最近学习langchain1.2,为此写了一个小项目--text2sql智能体项目,将自然语言转成sql,感觉还是做项目才能更加深刻的理解学习的知识,本次将项目分享给大家,大家可以共同学习一下,废话不多说,直接上干活,建议大家,手动敲一下。

图片

项目概述

  • 项目名称:text-to-sql 示例工程
  • 目标:展示如何将自然语言查询转换为安全的 MySQL 查询并执行,使用 LangChain 的 agent 模式与自定义工具集实现。
  • 主要文件:
    text_to_sql_agent.py、tools/text_to_sql_tools.py、utils/db_utils.py、sql.db

数据模型(5 张表)

  • company_department
    :公司部门信息(dept_id、dept_name、dept_code、parent_dept_id 等)
  • permission_info
    :权限说明(perm_id、perm_code、perm_type 等)
  • user_role
    :角色定义(role_id、role_code 等)
  • role_permission
    :角色与权限的多对多关系(role_id ↔ perm_id)
  • user_register
    :用户注册信息,关联部门与角色(dept_id, role_id)

具体建表语句与示例数据见 sql.db,这个数据库的创建文件是我用大模型生成,现在构造数据真的很方便。

架构与工作流程

  • 在 text_to_sql_agent.py中通过 LangChain 的 create_agent将 LLM 与一组工具(tools)连接。工具由 get_tools()创建并注入 agent:ListTablesToolTableSchemaToolSQLQueryToolSQLQueryCheckerTool
  • 数据库相关操作封装在 utils/db_utils.py的 MySQLDatabaseManager,提供获取表名、表注释、表结构、执行查询和校验 SQL 的方法。
  • 交互流程(由 system prompt 强制):
    1. 列出数据库表(工具:sql_db_list_tables)。
    2. 查看相关表的 schema(工具:sql_db_schema)。
    3. LLM 生成 SQL(仅允许 SELECT/WITH),使用 sql_db_query_checker校验。
    4. 使用 sql_db_query执行查询并返回 JSON 格式结果。

关键实现要点与代码片段

  • agent 注册工具(节选自 text_to_sql_agent.py):
def get_tools(host: str, port: int, username: str, password: str, database: str):    connection_string = f"mysql+pymysql://{username}:{password}@{host}:{port}/{database}?charset=utf8mb4"    manager = MySQLDatabaseManager(connection_string)    return [        ListTablesTool(db_manager=manager),        TableSchemaTool(db_manager=manager),        SQLQueryTool(db_manager=manager),        SQLQueryCheckerTool(db_manager=manager),    ]

  • 执行查询时的安全性检查(节选自 utils/db_utils.py):
forbidden_keywords = ['insert','update','delete','drop','truncate','alter','create','grant']query_lower = query.lower()if not query_lower.startswith(("select"'with')) and any(k in query_lower for k in forbidden_keywords):    raise ValueError("出于安全考虑,只允许执行select查询和with查询")

  • 列出表工具(节选自 tools/text_to_sql_tools.py):
class ListTablesTool(BaseTool):    name = "sql_db_list_tables"    description = "列出 MySQL 数据库中的所有表名及描述"    def _run(self) -> str:        tables_info = self.db_manager.get_tables_with_comments()        result = f"数据库中共有 {len(tables_info)} 个表:\n\n"        for i, t in enumerate(tables_info):            result += f"{i}. 表名:{t['table_name']}\n    描述:{t['table_comment'or '(暂无描述)'}\n\n"        return result


运行与快速上手

  1. 在 MySQL 中执行 sql.db中的 SQL,导入示例表与数据。
  2. 在 text_to_sql_agent.py中调整 get_tools()的数据库连接参数(host/port/username/password/database)。
  3. 运行 agent 示例:
python text_to_sql_agent.py

注意:示例代码中可能包含示范性的模型/密钥设置,请在生产中使用环境变量或安全配置存储 API Key 与数据库凭据,切勿硬编码。

示例场景

问:"赵六属于哪个部门,他有哪些权限?"

流程示例:

  • agent 首先调用 sql_db_list_tables查看有哪些表;
  • agent 调用 sql_db_schema获取 user_registerrole_permissionpermission_info的字段信息;
  • LLM 基于 schema 生成 SELECT查询(限制列与返回行数),并使用 sql_db_query_checker校验;
  • 最终执行 sql_db_query并将查询结果(JSON)和自然语言总结返回给用户。

图片
图片

     这个查询需要关联三个表,结果正确,整体代码逻辑还没有做太多优化,大家可以自己做一下优化。

代码和数据都打包好放在了网盘里,获取代码私信回复【tq】

大模型感兴趣的可以进群交流,已在群的就不要进了,我会定时清理
图片

历史优秀文章
工作流and前端webui:indextts2更优化的语音克隆、可控制情绪,长文本不失真
一键包:qwen3-vl图像理解的里程碑,反推看图解题更精准
方言tts:支持多人对话的方言tts,支持语音克隆,可现实长篇播客,文末一键包
一键包:图生视频,首尾帧视频生成,效果堪比大片,你也可以当导演了
开源图片一键高清项目,本地部署免费使用
替换视频人物:阿里开源wan2.2-vace-fun,可实现图片人物替换视频人物,文末一键包

开源AI短剧生成平台BigOrange,一句话自动创作视频

BigOrange-AI-Director开源平台,实现从剧本到成片全自动生产。采用工业化工作流,解决传统生成中角色不一致等问题,支持精准控制角色、场景与镜头运动。开源代码便于自定义扩展,适合个人与机构快速创作短剧,尤其可把握春节等流量高峰高效产出内容。

AI短剧自动生成平台开源!部署一套,生产短剧!

源代码

https://www.gitcc.com/yi-ee/BigOrange-AI-Director

AI 一站式短剧/漫剧平台,面向创作者,实现从灵感到成片的高效生产。

它摇弃了传统的"抽卡式"生成,采用 "Script-to-Asset-to-Keyframe" 的工业化工作流。通过深度集成 GCC API 的先进 AI 模型,实现 "一句话生成完整短剧,从剧本到成片全自动化",同时精准控制角色一致性、场景连续性与镜头运动。

图片

开源项目介绍:BigOrange-AI-Director——AI一站式短剧/漫剧生成平台

项目地址https://www.gitcc.com/yi-ee/BigOrange-AI-Director

核心价值

BigOrange-AI-Director 是一个面向创作者的开源平台,通过AI技术实现从剧本到成片的全自动化生产,颠覆传统短剧/漫剧制作流程。其核心价值包括:

  1. 工业化生产流程
    • 采用 "Script-to-Asset-to-Keyframe" 工作流,将剧本拆解为角色、场景、动作等资产,再生成关键帧动画,确保内容逻辑连贯。
    • 替代传统"抽卡式"生成(随机生成片段后拼接),解决角色不一致、场景跳戏等问题。
  2. 全自动化创作
    • 用户输入一句描述或剧本,AI自动完成分镜、角色设计、场景生成、动画渲染等全流程。
    • 支持精准控制角色形象、场景风格、镜头运动(如推拉摇移),提升创作自由度。
  3. 开源生态优势
    • 代码完全开放,开发者可自定义模型、优化流程,甚至扩展功能(如添加特定风格滤镜、互动剧情分支)。

应用场景

  1. 个人创作者
    • 无需专业团队,单人即可快速生产高质量短剧/漫剧,降低内容创作门槛。
    • 适合短视频博主、独立动画师、小说作者等快速将文字IP转化为视觉内容。
  2. MCN机构/影视公司
    • 批量生成短视频内容,满足平台(如抖音、快手)的日更需求。
    • 通过AI快速试错,验证剧本市场反馈,降低试错成本。
  3. 教育/娱乐领域
    • 用于教学动画制作、儿童绘本动态化,或开发互动式叙事游戏。

春节期间:短剧/漫剧发展的黄金机会

  1. 手机短视频爆发期
    • 春节是用户活跃度高峰,短视频平台流量激增,对优质内容需求旺盛。
    • AI短剧可快速填充"碎片化娱乐"场景(如拜年动画、节日小剧场),吸引用户停留。
  2. 低成本高效生产
    • 传统短剧制作周期长、成本高,而AI平台可实现"日更百条",抢占节日流量红利。
    • 例如:生成系列春节主题短剧(如"AI拜年""年兽传说"),通过话题营销快速传播。
  3. 互动性增强用户粘性
    • 结合AI生成技术,可开发互动式短剧(如用户选择剧情分支),提升参与感。

技术亮点与开源优势

  1. 深度集成GCC API
    • 利用先进AI模型(如Stable Diffusion、Sora等)生成角色、场景,支持多模态输入(文本、图像、音频)。
  2. 角色一致性控制
    • 通过LoRA微调或ID嵌入技术,确保同一角色在不同场景中形象统一。
  3. 场景连续性优化
    • 基于时空注意力机制,避免场景切换时的突兀感,提升叙事流畅度。
  4. 可扩展性
    • 开源代码允许开发者接入自定义模型(如特定风格动画生成),或添加后期编辑功能(如字幕、配音)。

如何快速部署?

  1. 环境要求
    • Python 3.8+、CUDA 11.x、PyTorch 2.0+
    • 推荐使用NVIDIA GPU(A100/RTX 4090等)加速渲染。
  2. 部署步骤
    • 克隆仓库:git clone https://www.gitcc.com/yi-ee/BigOrange-AI-Director.git
    • 安装依赖:pip install -r requirements.txt
    • 下载预训练模型(如GCC API权重)并配置路径。
    • 运行Web界面:python app.py(支持本地/云端部署)。
  3. 生产短剧
    • 输入剧本(如:"春节回家,妈妈做了一桌年夜饭"),AI自动生成分镜脚本。
    • 调整参数(角色数量、场景风格),点击"生成"即可导出视频。

总结:春节期间的"AI短剧"风口

BigOrange-AI-Director的开源,为创作者提供了"一句话生成短剧"的工业化工具,尤其适合春节期间快速生产节日内容。通过AI降低制作门槛,结合短视频平台的流量红利,创作者可高效抢占市场,实现内容变现或品牌曝光。

立即部署,开启你的AI短剧工厂!


AI短剧自动生成平台开源!部署一套,生产短剧!

源代码

https://www.gitcc.com/yi-ee/BigOrange-AI-Director

AI 一站式短剧/漫剧平台,面向创作者,实现从灵感到成片的高效生产。

它摇弃了传统的"抽卡式"生成,采用 "Script-to-Asset-to-Keyframe" 的工业化工作流。通过深度集成 GCC API 的先进 AI 模型,实现 "一句话生成完整短剧,从剧本到成片全自动化",同时精准控制角色一致性、场景连续性与镜头运动。


【280字符】分享3个GitHub优质开源项目

①PageLM:开源NotebookLM平替,可将资料转为互动学习资源,支持本地部署;②DeepSeek-OCR-2:轻量OCR模型,模仿人类视觉逻辑解析复杂版面;③Awesome Web Agents:Web智能体开发资源大全,涵盖工具框架与论文。

01

PageLM:NotebookLM 开源平替

PageLM 是又一个开源版的 Google NotebookLM。
图片
NotebookLM 最火的功能就是把一堆资料扔进去,它能给你生成播客对话、测验题或者复习卡片。
PageLM 就是干这个的,把学习资料喂给它,它不光能帮你整理重点,还能把死板的文字变成互动的学习资源。

比如你上传一份历史课件,它能直接反向给你出几道测试题,或者把重点知识变成 Flashcards 方便记忆。
最重要的是它不像谷歌的产品那样把数据锁在云端,你可以自己部署,对于那些在意隐私或者想根据自己需求魔改功能的开发者来说,这玩意儿比官方的 NotebookLM 灵活多了。
图片
开源地址:https://github.com/CaviraOSS/pagelm

02

DeepSeek-OCR-2

DeepSeek 这次又整了个狠活。
以前的 OCR 傻乎乎地从左到右、从上到下扫描图片,遇到报纸排版或者复杂表格就容易乱码。
DeepSeek 这个新版本用了一个叫 DeepEncoder V2 的技术,让模型像人眼一样按逻辑去阅读,哪儿是标题、哪儿是分栏。
就像他们说的:探索更像人类的视觉编码。
图片
而且这模型特别轻量,参数量只有 3B,跑起来不吃配置,但效果据说比很多闭源的大模型还好。
它甚至直接拿了一个小的语言模型(Qwen2-0.5B)来当视觉编码器用,这思路挺野的,等于让模型在图片的时候就已经带上了理解的脑子,而不只是单纯地认字。
图片
开源地址:https://github.com/deepseek-ai/DeepSeek-OCR-2

03

Awesome Web Agents

Steel.dev 本身是做 AI 浏览器基础设施的,就是专门给 AI Agent 提供浏览器环境的。

他们把自己在这个圈子里看到的最好的工具、框架、论文都整理到了这个列表里。

图片

如果你想做一个能操控浏览器、自动帮你在网上订票、抓数据或者填表单的 AI Agent,别满世界乱搜了,直接看这个列表就行。

里面涵盖了从底层驱动,比如 Puppeteer、Playwright 到上层框架,比如 LangChain 里的相关模块,再到最新的学术论文,基本上把 Web Agent 这个垂直领域的家底都翻出来了。

这种列表最大的好处就是帮你省时间。

现在 AI Agent 发展太快,今天出一个新框架,明天发一篇新论文,很容易跟丢。

Steel 这个团队因为自己就靠这行吃饭,所以选出来的东西质量比较高,基本没有凑数的,想入坑 Web Agent 开发的话,把这个库 Star 一下是个好起手。

开源地址:https://github.com/steel-dev/awesome-web-agents

04

点击下方卡片,关注逛逛 GitHub

这个公众号历史发布过很多有趣的开源项目,如果你懒得翻文章一个个找,你直接关注微信公众号:逛逛 GitHub ,后台对话聊天就行了:

图片

Building a Text-to-SQL Agent with LangChain 1。2 : Source Code Walkthrough

Summary: This project demonstrates a Text-to-SQL agent using LangChain 1.2. It converts natural language queries into safe MySQL queries via...