从ai产品推荐到利用cursor快速掌握一个开源项目再到langchain手搓一个Text2Sql agent

news2025/1/30 14:40:44

目录

0. 经验分享:产品推荐

1. 经验分享:提示词优化

2. 经验分享:使用cursor 阅读一篇文章 

3. 经验分享:使用cursor 阅读一个完全陌生的开源项目

4. 经验分享:手搓一个text2sql agent (使用langchain langgraph)


0. 经验分享:产品推荐

ai 产品

360ai 浏览器

https://www.perplexity.ai/onboarding?redirect=https%3A%2F%2Fwww.perplexity.ai%2F%3Flogin-source%3DoneTapHome

秘塔AI搜索

ima.copilot-腾讯智能工作台

https://deepseek.com      -→ 揭秘DeepSeek:一个更极致的中国技术理想主义故事

ai 导航站

极客时间 AI 指南

ai 学习材料

https://github.com/anthropics
大语言模型(LLM)学习路径和资料汇总 · Issue #97 · ninehills/blog · GitHub

Docs

动手实战人工智能 AI By Doing — 动手实战人工智能 AI By Doing

agent平台

code

dify

fastgpt

发展趋势:

pc-agent

GLM-PC

mobile-agent

Mobile-Agent-E: Self-Evolving Mobile Assistant for Complex Tasks

检测论文是否由ai 生成: GitHub - Jiaqi-Chen-00/ImBD: [AAAI 2025] Official repository of Imitate Before Detect: Aligning Machine Stylistic Preference for Machine-Revised Text Detection

写小说   GitHub - nicekate/Al-StoryLab: AI-StoryLab 是一款基于 Next.js 的智能故事创作平台,集成音频制作与 AI 绘图提示词生成功能。  

             GitHub - Aria-Zhangjl/StoryWeaver: [AAAI 2025] StoryWeaver: A Unified World Model for Knowledge-Enhanced Story Character Customization

漫画生成: GitHub - jianzongwu/DiffSensei: Implementation of "DiffSensei: Bridging Multi-Modal LLMs and Diffusion Models for Customized Manga Generation"

社交: GitHub - langchain-ai/social-media-agent: 📲 An agent for sourcing, curating, and scheduling social media posts with human-in-the-loop.

            https://github.com/whotto/Video_note_generator

电影视频:  https://github.com/linyqh/NarratoAI
 

                   https://github.com/Huanshere/VideoLingo/blob/main/i18n/README.zh.md

数字人: https://github.com/modstart-lib/aigcpanel

教育方向: GitHub - taoofagi/easegen-front: Easegen is an open-source digital human course creation platform offering comprehensive solutions from course production and video management to intelligent quiz generation.Easegen 是一个开源的数字人课程制作平台,提供从课程制作、视频管理到智能出题的全方位解决方案。


1. 经验分享:提示词优化

a.search in english, reponse use chinese ;

b.思维链 )

李继刚:Prompt的道与术

总结:没什么用


2. 经验分享:使用cursor 阅读一篇文章 

1.安装markmap插件

2.提示词: @http://xxx 阅读文章帮我,使用md 格式生产思维导图

效果如下:


3. 经验分享:使用cursor 阅读一个完全陌生的开源项目

1.安装plantUml 插件

2. 提示词:

     @codebase 使用plantUml格式,帮我生成这个项目的架构图

     @codebase 帮我生成xxx 的流程图

     @codebase 帮我写一篇关于roo  Cline 系统提示词分析

     

以roo-code插件项目为例  为例: GitHub - RooVetGit/Roo-Code: Roo Code (prev. Roo Cline) is a VS Code plugin that enhances coding with AI-powered automation, multi-model support, and experimental features


4. 经验分享:手搓一个text2sql agent (使用langchain langgraph)

import os
from typing import Dict, Any, List
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_community.utilities import SQLDatabase
from dotenv import load_dotenv
import pymysql
from sqlalchemy import create_engine, text

# 加载环境变量
load_dotenv()

class MySQLChainDemo:
    """MySQL Chain 演示类"""

    def __init__(self, database: str = None):
        """
        初始化 MySQL Chain 演示实例
        
        Args:
            database: 数据库名称,如果不指定则使用环境变量中的配置
        """
        self.llm = ChatOpenAI(
            model="deepseek-chat",
            openai_api_key=os.getenv("LLM_API_KEY"),
            base_url=os.getenv("LLM_BASE_URL")
        )
        
        # 使用传入的数据库名或环境变量中的配置
        self.database = database or os.getenv("MYSQL_DATABASE", "stock")
        
        # 创建数据库连接
        db_url = (f"mysql+pymysql://{os.getenv('MYSQL_USER')}:{os.getenv('MYSQL_PASSWORD')}"
                 f"@{os.getenv('MYSQL_HOST')}:{os.getenv('MYSQL_PORT')}/{self.database}")
        
        self.engine = create_engine(db_url)
        self.db = SQLDatabase(engine=self.engine)

    def get_tables_info(self) -> str:
        """获取所有表的信息"""
        try:
            with self.engine.connect() as conn:
                # 获取所有表名
                tables = conn.execute(text("SHOW TABLES")).fetchall()
                tables = [table[0] for table in tables]
                
                tables_info = [f"当前数据库: {self.database}"]
                for table in tables:
                    # 获取表结构
                    columns = conn.execute(text(f"DESCRIBE `{table}`")).fetchall()
                    columns_info = [f"{col[0]} ({col[1]})" for col in columns]
                    
                    tables_info.append(f"\n表名: {table}")
                    tables_info.append("列: " + ", ".join(columns_info))
                
                return "\n".join(tables_info)
        except Exception as e:
            return f"获取表信息失败: {str(e)}"

    def execute_query(self, question: str) -> str:
        """执行自然语言查询"""
        try:
            # 创建提示模板
            prompt = ChatPromptTemplate.from_messages([
                ("system", """你是一个MySQL专家,请将用户的自然语言问题转换为可执行的MySQL查询语句。

当前数据库环境:
数据库名称: {database}

数据库表结构如下:
{tables_info}

规则:
1. 只返回一个MySQL查询语句
2. 不要包含任何注释或额外说明
3. 不要使用markdown格式
4. 使用反引号(`)包裹表名和列名
5. 确保SQL语法正确
6. 查询information_schema时使用当前数据库名称

示例:
问题:数据库中有哪些表?
返回:SELECT TABLE_NAME as table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{database}';

问题:查询用户表有多少条记录?
返回:SELECT COUNT(*) as total FROM `users`;
"""),
                ("human", "{question}")
            ])
            
            # 获取表信息
            tables_info = self.get_tables_info()
            
            # 生成SQL
            chain = prompt | self.llm | StrOutputParser()
            sql = chain.invoke({
                "question": question,
                "tables_info": tables_info,
                "database": self.database
            }).strip()
            
            # 执行SQL
            with self.engine.connect() as conn:
                result = conn.execute(text(sql))
                rows = result.fetchall()
                
                if not rows:
                    return f"SQL查询: {sql}\n\n查询结果: 无数据"
                
                # 格式化结果
                columns = result.keys()
                results = []
                for row in rows:
                    result_dict = dict(zip(columns, row))
                    results.append(str(result_dict))
                
                return f"SQL查询: {sql}\n\n查询结果:\n" + "\n".join(results)
                
        except Exception as e:
            return f"查询执行失败: {str(e)}\nSQL: {sql if 'sql' in locals() else '未生成'}"

def main():
    """主函数"""
    # 可以指定数据库名称,或使用默认值
    demo = MySQLChainDemo()  # 使用默认的 stock 数据库
    # demo = MySQLChainDemo(database="other_db")  # 使用指定的数据库
    
    # 测试查询
    test_queries = [
        "数据库中有哪些表?",
        "查询t_stock_min_trade表中最新的交易时间",
        "查询t_stock_min_trade表中股票代码为000001的最近3条记录",
        "统计t_stock_min_trade表中有多少个不同的股票代码"
    ]
    
    for query in test_queries:
        print(f"\n问题: {query}")
        result = demo.execute_query(query)
        print(result)
        print("-" * 50)

if __name__ == "__main__":
    main() 


涉及到到细节的代码和roo code 源码分析见github:
https://github.com/caicongyang/ai-agent-demo.git
https://github.com/caicongyang/mini-cline.git

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2284767.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Blazor-选择循环语句

今天我们来说说Blazor选择语句和循环语句。 下面我们以一个简单的例子来讲解相关的语法,我已经创建好了一个Student类,以此类来进行语法的运用 因为我们需要交互性所以我们将类创建在*.client目录下 if 我们做一个学生信息的显示,Gender为…

appium自动化环境搭建

一、appium介绍 appium介绍 appium是一个开源工具、支持跨平台、用于自动化ios、安卓手机和windows桌面平台上面的原生、移动web和混合应用,支持多种编程语言(python,java,Ruby,Javascript、PHP等) 原生应用和混合应用&#xf…

大数据Hadoop入门2

目录 第三部分(Hadoop MapReduce和Hadoop YARN) 1.课程内容-大纲-学习目标 2.理解先分再合、分而治之的思想 3.hadoop团队针对MapReduce的设计构思 4.Hadoop MapReduce介绍、阶级划分和进程组成 5.Hadoop MapReduce官方示例-圆周率PI评估 6.Hadoo…

21.Word:小赵-毕业论文排版❗【39】

目录 题目​ NO1.2 NO3.4 NO5.6 NO7.8.9 NO10.11.12 题目 NO1.2 自己的论文当中接收老师的修改:审阅→比较→源文档:考生文件夹:Word.docx→修订的文档:考生文件夹:教师修改→确定→接收→接收所有修订将合并之…

【go语言】并发编程

一、协程、线程、进程 在计算机编程中,进程、线程和协程都是用于并发执行任务的不同概念。他们的区别主要体现在创建、管理和调度的复杂度上,特别是在不同的编程语言中有不同的实现方式。下面是他们的详细区别和在 go 语言中的实现方式。 1.1 进程 定义…

算法1-1 模拟与高精度

目录 一 阶乘数码 二 麦森数 三 模拟题 一 阶乘数码 本题中n<1000,1000的阶乘为以下这么大&#xff0c;远超long的范围 402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901…

公式与函数的应用

一 相邻表格相乘 1 也可以复制 打印标题

ShenNiusModularity项目源码学习(7:数据库结构)

ShenNiusModularity项目默认使用mysql数据库&#xff0c;数据库连接字符串放到了ShenNius.Admin. Mvc、ShenNius.Admin.Hosting的appsettings.json文件内。   ShenNiusModularity项目为自媒体内容管理系统&#xff0c;支持常规管理、CMS管理、商城管理等功能&#xff0c;其数…

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09; 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09;DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffus…

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(三)

Understanding Diffusion Models: A Unified Perspective&#xff08;三&#xff09; 文章概括 文章概括 引用&#xff1a; article{luo2022understanding,title{Understanding diffusion models: A unified perspective},author{Luo, Calvin},journal{arXiv preprint arXiv:…

修改maven的编码格式为utf-8

1.maven默认编码为GBK 注:配好MAVEN_HOME的环境变量后,在运行cmd. 打开cmd 运行mvn -v命令即可. 2.修改UTF-8为默认编码. 设置环境变量 变量名 MAVEN_OPTS 变量值 -Xms256m -Xmx512m -Dfile.encodingUTF-8 3.保存,退出cmd.重新打开cmd 运行mvn -v命令即可. 源码获取&…

从AD的原理图自动提取引脚网络的小工具

这里跟大家分享一个我自己写的小软件&#xff0c;实现从AD的原理图里自动找出网络名称和引脚的对应。存成文本方便后续做表格或是使用简单行列编辑生成引脚约束文件&#xff08;如.XDC .UCF .TCL等&#xff09;。 我们在FPGA设计中需要引脚锁定文件&#xff0c;就是指示TOP层…

【数据结构】(1)集合类的认识

一、什么是数据结构 1、数据结构的定义 数据结构就是存储、组织数据的方式&#xff0c;即相互之间存在一种或多种关系的数据元素的集合。 2、学习数据结构的目的 在实际开发中&#xff0c;我们需要使用大量的数据。为了高效地管理这些数据&#xff0c;实现增删改查等操作&…

解决使用Selenium时ChromeDriver版本不匹配问题

在学习Python爬虫过程中如果使用Selenium的时候遇到报错如下session not created: This version of ChromeDriver only supports Chrome version 99… 这说明当前你的chrome驱动版本和浏览器版本不匹配。 例如 SessionNotCreatedException: Message: session not created: This…

CAN波特率匹配

STM32 LinuxIMX6ull&#xff08;Linux&#xff09;基于can-utils测试

JavaScript中的相等运算符:`==`与`===`

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

A7. Jenkins Pipeline自动化构建过程,可灵活配置多项目、多模块服务实战

服务容器化构建的环境配置构建前需要解决什么下面我们带着问题分析构建的过程:1. 如何解决jenkins执行环境与shell脚本执行环境不一致问题?2. 构建之前动态修改项目的环境变量3. 在通过容器打包时避免不了会产生比较多的不可用的镜像资源,这些资源要是不及时删除掉时会导致服…

66-《虞美人》

虞美人 虞美人&#xff08;学名&#xff1a;Papaver rhoeas L.&#xff09;&#xff1a;一年生草本植物&#xff0c;全体被伸展的刚毛&#xff0c;稀无毛。茎直立&#xff0c;高25-90厘米&#xff0c;具分枝。叶片轮廓披针形或狭卵形&#xff0c;羽状分裂&#xff0c;裂片披针形…

obsidian插件——Metadata Hider

原本是要找导出图片时显示属性的插件&#xff0c;奈何还没找到&#xff0c;反而找到了可以隐藏属性的插件。唉&#xff0c;人生不如意&#xff0c;十之八九。 说一下功能&#xff1a; 这个插件可以把obsidian的文档属性放在右侧显示&#xff0c;或者决定只显示具体几项属性&a…

特种作业操作之低压电工考试真题

1.下面&#xff08; &#xff09;属于顺磁性材料。 A. 铜 B. 水 C. 空气 答案&#xff1a;C 2.事故照明一般采用&#xff08; &#xff09;。 A. 日光灯 B. 白炽灯 C. 压汞灯 答案&#xff1a;B 3.人体同时接触带电设备或线路中的两相导体时&#xff0c;电流从一相通过人体流…