本地CPU搭建知识库大模型来体验学习Prompt Engineering/RAG/Agent/Text2sql

news2024/11/18 12:21:59

目录

1.环境

2.效果

3.概念解析

4.架构图

5. AI畅想

6.涉及到的技术方案

7. db-gpt的提示词



1.环境

基于一台16c 32G的纯CPU的机器来搭建

纯docker 打造

2.效果

3.概念解析

Prompt Engineering  : 提示词工程

RAG: 检索增强生成; 知识库的构建+知识检索+大模型生成

Agent:通过工具来增强LLM的能力实现与现实世界的交互; Agent =LLM+Planning+FeedBack+Tool use

Text2sql: 将文本翻译成sql

4.架构图

5. AI畅想

a.LLM最快落地的两个实施路径;本地知识库 + Text2sql

b.本地模型的意义: 安全自助可控,成本

未来的发展方向:

1.本地大模型&小模型

2.AIPC

3.AIPhone

4.面向agent开发

5.面向chat的交互

前阿里巴巴张勇:所有应用都值得基于大模型所有的重新做一遍

6.涉及到的技术方案

chatgpt-on-wechat:  GitHub - zhayujie/chatgpt-on-wechat: 基于大模型搭建的聊天机器人,同时支持 企业微信、微信 公众号、飞书、钉钉 等接入,可选择GPT3.5/GPT4.0/Claude/文心一言/讯飞星火/通义千问/Gemini/GLM-4/Claude/LinkAI,能处理文本、语音和图片,访问操作系统和互联网,支持基于自有知识库进行定制企业智能客服。         

db-gpt: https://github.com/eosphoros-ai/DB-GPT

 fastgpt: 快速了解 FastGPT | FastGPT   

 ollama: library   

chatglt.cpp : GitHub - li-plus/chatglm.cpp: C++ implementation of ChatGLM-6B & ChatGLM2-6B & ChatGLM3 & more LLMs

llama-gpt :  GitHub - getumbrel/llama-gpt: A self-hosted, offline, ChatGPT-like chatbot. Powered by Llama 2. 100% private, with no data leaving your device. New: Code Llama support!    

以上在官方文档都提供了docker或者docker-compose 的快速部署,方便大家学习;

7. db-gpt的提示词

问题:查询ouser.u_user表告诉我今天新增了多少用户
下面是db-gpt autogen的过程可以让我们学下

2024-04-24 13:24:10 c9b281bb501c dbgpt.app.openapi.api_v1.api_v1[1] INFO get_chat_instance:conv_uid='e1844e5c-023d-11ef-9e5a-0242c0a80002' user_input='查询ouser.u_user表告诉我今天新增了多少用户' user_name=None chat_mode='chat_with_db_qa' select_param='ouser' model_name='gpt-3.5-turbo-0301' incremental=False sys_code=None
2024-04-24 13:24:10 c9b281bb501c dbgpt.datasource.manages.connect_config_db[1] INFO Result: <sqlalchemy.engine.cursor.CursorResult object at 0x7fc4306ec6a0>
chat_completions:chat_with_db_qa,ouser,gpt-3.5-turbo-0301
Get prompt template of scene_name: chat_with_db_qa with model_name: gpt-3.5-turbo-0301, proxyllm_backend: None, language: zh
<class 'dbgpt.storage.vector_store.chroma_store.ChromaStore'>
INFO:     10.1.195.47:54748 - "POST /api/v1/chat/completions HTTP/1.1" 200 OK
2024-04-24 13:24:14 c9b281bb501c dbgpt.storage.vector_store.chroma_store[1] INFO ChromaStore similar search
Batches: 100%|██████████| 1/1 [00:01<00:00,  1.11s/it]
2024-04-24 13:24:15 c9b281bb501c dbgpt.core.awel.runner.local_runner[1] INFO Begin run workflow from end operator, id: d4a6e059-67db-4f74-ad9f-80155dffc91f, runner: <dbgpt.core.awel.runner.local_runner.DefaultWorkflowRunner object at 0x7fc469fa3670>
2024-04-24 13:24:15 c9b281bb501c dbgpt.core.awel.runner.local_runner[1] INFO Begin run workflow from end operator, id: 64590fab-5ef8-4c5f-a47c-20a80f8d2bb6, runner: <dbgpt.core.awel.runner.local_runner.DefaultWorkflowRunner object at 0x7fc469fa3670>
2024-04-24 13:24:15 c9b281bb501c dbgpt.app.scene.base_chat[1] INFO payload request:
ModelRequest(model='gpt-3.5-turbo-0301', messages=[ModelMessage(role='system', content="\n根据要求和问题,提供专业的答案。如果无法从提供的内容中获取答案,请说:“知识库中提供的信息不足以回答此问题。” 禁止随意捏造信息。\n\n使用以下表结构信息: \n['update_username (更新用户名), update_userip (更新用户ip), update_usermac (更新用户MAC), update_time (更新时间), update_time_db (更新时间 数据库), client_versionno (客户端版本号), company_id (公司ID), channel_code (渠道编码)), and index keys: idx_user_id(`user_id`) , and table comment: 用户操作日志表', 'update_username (最后修改人姓名), update_time (最后修改时间), update_time_db, company_id (公司id)), and index keys: entity_id(`entity_id`) , process_type(`process_type`) , unique_identification(`unique_identification, user_account_id, process_type`) , and table comment: 用户账户人工作业表', 'create_userid (创建人ID), create_username (创建人姓名), create_time (创建时间-应用操作时间), create_time_db (创建时间-数据库操作时间), server_ip (服务器IP), update_userid (最后修改人ID), update_username (最后修改人姓名), update_time (最后修改时间), update_time_db, company_id (公司id)), and index keys: entity_id(`entity_id, type, sub_type, entity_type, rel_id, year, month, day`) , type(`type`) , and table comment: 月度账户汇总表', '(最后修改人姓名), update_user_ip (最后修改人IP), update_user_mac (最后修改人MAC), update_time (更新时间), update_time_db (更新时间 数据库), server_ip (服务器ip), company_id (公司ID), client_versionno (客户端版本号), create_userid (创建用户ID), create_username (创建用户名), create_userip (创建用户IP), create_usermac (创建用户MAC), update_userid (更新用户ID), update_username (更新用户名), update_userip (更新用户ip), update_usermac (更新用户MAC)), and table comment: 渠道表', 'u_user_action_log(id, type (1. 注册, 2. 登录, 3. 修改密码, 4. 完善信息), remark (备注), channel (渠道), user_id (操作用户ID), msg_send_flag (消息发送标志), point_send_flag (消息发送标志), deal_flag (0=未处理 1=处理), is_available (是否可用,0-不可用,1可用), is_deleted (逻辑删除字段 0 正常 1 已删除), version_no (版本号), create_userid (创建用户ID), create_username (创建用户名), create_userip (创建用户IP), create_usermac (创建用户MAC), create_time (创建日期), create_time_db (创建日期 数据库), server_ip (服务器ip), update_userid (更新用户ID), update_username (更新用户名), update_userip (更新用户ip),']\n\n问题:\n查询ouser.u_user表告诉我今天新增了多少用户\n一步步思考。\n", round_index=0), ModelMessage(role='human', content='查询ouser.u_user表告诉我今天新增了多少用户', round_index=0)], temperature=0.6, max_new_tokens=1024, stop=None, stop_token_ids=None, context_len=None, echo=False, span_id='7b731a8a-614d-492d-ad8e-40b98b7ed46a:8b12ee06-3290-4784-85cc-a238c050b474', context=ModelRequestContext(stream=True, cache_enable=False, user_name=None, sys_code=None, conv_uid=None, span_id='7b731a8a-614d-492d-ad8e-40b98b7ed46a:8b12ee06-3290-4784-85cc-a238c050b474', chat_mode='chat_with_db_qa', chat_param=None, extra={}, request_id=None))
2024-04-24 13:24:15 c9b281bb501c dbgpt.core.awel.runner.local_runner[1] INFO Begin run workflow from end operator, id: 9fe07ac3-2522-4e75-829b-cdd2c00bbb48, runner: <dbgpt.core.awel.runner.local_runner.DefaultWorkflowRunner object at 0x7fc469fa3670>
2024-04-24 13:24:15 c9b281bb501c dbgpt.core.awel.operators.common_operator[1] INFO branch_input_ctxs 0 result None, is_empty: False
2024-04-24 13:24:15 c9b281bb501c dbgpt.core.awel.operators.common_operator[1] INFO Skip node name llm_model_cache_node
2024-04-24 13:24:15 c9b281bb501c dbgpt.core.awel.operators.common_operator[1] INFO branch_input_ctxs 1 result True, is_empty: False
2024-04-24 13:24:15 c9b281bb501c dbgpt.core.awel.runner.local_runner[1] INFO Skip node name llm_model_cache_node, node id 85304c88-6a77-478c-a32c-765a9287a367
2024-04-24 13:24:15 c9b281bb501c dbgpt.model.adapter.base[1] INFO Message version is v2
2024-04-24 13:24:15 c9b281bb501c dbgpt.model.cluster.worker.default_worker[1] INFO current generate stream function is asynchronous stream function
2024-04-24 13:24:15 c9b281bb501c dbgpt.model.proxy.llms.chatgpt[1] INFO Send request to openai(1.17.0), payload: {'stream': True, 'model': 'gpt-3.5-turbo', 'temperature': 0.6, 'max_tokens': 1024}

 messages:
[{'role': 'system', 'content': "\n根据要求和问题,提供专业的答案。如果无法从提供的内容中获取答案,请说:“知识库中提供的信息不足以回答此问题。” 禁止随意捏造信息。\n\n使用以下表结构信息: \n['update_username (更新用户名), update_userip (更新用户ip), update_usermac (更新用户MAC), update_time (更新时间), update_time_db (更新时间 数据库), client_versionno (客户端版本号), company_id (公司ID), channel_code (渠道编码)), and index keys: idx_user_id(`user_id`) , and table comment: 用户操作日志表', 'update_username (最后修改人姓名), update_time (最后修改时间), update_time_db, company_id (公司id)), and index keys: entity_id(`entity_id`) , process_type(`process_type`) , unique_identification(`unique_identification, user_account_id, process_type`) , and table comment: 用户账户人工作业表', 'create_userid (创建人ID), create_username (创建人姓名), create_time (创建时间-应用操作时间), create_time_db (创建时间-数据库操作时间), server_ip (服务器IP), update_userid (最后修改人ID), update_username (最后修改人姓名), update_time (最后修改时间), update_time_db, company_id (公司id)), and index keys: entity_id(`entity_id, type, sub_type, entity_type, rel_id, year, month, day`) , type(`type`) , and table comment: 月度账户汇总表', '(最后修改人姓名), update_user_ip (最后修改人IP), update_user_mac (最后修改人MAC), update_time (更新时间), update_time_db (更新时间 数据库), server_ip (服务器ip), company_id (公司ID), client_versionno (客户端版本号), create_userid (创建用户ID), create_username (创建用户名), create_userip (创建用户IP), create_usermac (创建用户MAC), update_userid (更新用户ID), update_username (更新用户名), update_userip (更新用户ip), update_usermac (更新用户MAC)), and table comment: 渠道表', 'u_user_action_log(id, type (1. 注册, 2. 登录, 3. 修改密码, 4. 完善信息), remark (备注), channel (渠道), user_id (操作用户ID), msg_send_flag (消息发送标志), point_send_flag (消息发送标志), deal_flag (0=未处理 1=处理), is_available (是否可用,0-不可用,1可用), is_deleted (逻辑删除字段 0 正常 1 已删除), version_no (版本号), create_userid (创建用户ID), create_username (创建用户名), create_userip (创建用户IP), create_usermac (创建用户MAC), create_time (创建日期), create_time_db (创建日期 数据库), server_ip (服务器ip), update_userid (更新用户ID), update_username (更新用户名), update_userip (更新用户ip),']\n\n问题:\n查询ouser.u_user表告诉我今天新增了多少用户\n一步步思考。\n"}, {'role': 'user', 'content': '查询ouser.u_user表告诉我今天新增了多少用户'}]
llm_adapter: <OpenAIProxyLLMModelAdapter model_name=gpt-3.5-turbo-0301 model_path=chatgpt_proxyllm>

model prompt:

system:
根据要求和问题,提供专业的答案。如果无法从提供的内容中获取答案,请说:“知识库中提供的信息不足以回答此问题。” 禁止随意捏造信息。

使用以下表结构信息:
['update_username (更新用户名), update_userip (更新用户ip), update_usermac (更新用户MAC), update_time (更新时间), update_time_db (更新时间 数据库), client_versionno (客户端版本号), company_id (公司ID), channel_code (渠道编码)), and index keys: idx_user_id(`user_id`) , and table comment: 用户操作日志表', 'update_username (最后修改人姓名), update_time (最后修改时间), update_time_db, company_id (公司id)), and index keys: entity_id(`entity_id`) , process_type(`process_type`) , unique_identification(`unique_identification, user_account_id, process_type`) , and table comment: 用户账户人工作业表', 'create_userid (创建人ID), create_username (创建人姓名), create_time (创建时间-应用操作时间), create_time_db (创建时间-数据库操作时间), server_ip (服务器IP), update_userid (最后修改人ID), update_username (最后修改人姓名), update_time (最后修改时间), update_time_db, company_id (公司id)), and index keys: entity_id(`entity_id, type, sub_type, entity_type, rel_id, year, month, day`) , type(`type`) , and table comment: 月度账户汇总表', '(最后修改人姓名), update_user_ip (最后修改人IP), update_user_mac (最后修改人MAC), update_time (更新时间), update_time_db (更新时间 数据库), server_ip (服务器ip), company_id (公司ID), client_versionno (客户端版本号), create_userid (创建用户ID), create_username (创建用户名), create_userip (创建用户IP), create_usermac (创建用户MAC), update_userid (更新用户ID), update_username (更新用户名), update_userip (更新用户ip), update_usermac (更新用户MAC)), and table comment: 渠道表', 'u_user_action_log(id, type (1. 注册, 2. 登录, 3. 修改密码, 4. 完善信息), remark (备注), channel (渠道), user_id (操作用户ID), msg_send_flag (消息发送标志), point_send_flag (消息发送标志), deal_flag (0=未处理 1=处理), is_available (是否可用,0-不可用,1可用), is_deleted (逻辑删除字段 0 正常 1 已删除), version_no (版本号), create_userid (创建用户ID), create_username (创建用户名), create_userip (创建用户IP), create_usermac (创建用户MAC), create_time (创建日期), create_time_db (创建日期 数据库), server_ip (服务器ip), update_userid (更新用户ID), update_username (更新用户名), update_userip (更新用户ip),']

问题:
查询ouser.u_user表告诉我今天新增了多少用户
一步步思考。

human: 查询ouser.u_user表告诉我今天新增了多少用户

async stream output:

2024-04-24 13:24:18 c9b281bb501c dbgpt.model.cluster.worker.default_worker[1] INFO is_first_generate, usage: None
首先,我们需要确定如何识别 "今天"。一般来说,这涉及到当前日期的过滤。然后,我们需要找到 "新增用户" 的标志。假设 "新增用户" 是指在今天创建的用户记录。下面是一系列步骤来查询这个信息:

1. 确定今天的日期。
2. 使用SQL查询语句筛选出今天创建的用户记录。
3. 计算符合条件的记录数量。

以下是相应的SQL查询:

```sql
SELECT COUNT(*) AS new_users_count
FROM ouser.u_user
WHERE DATE(create_time) = CURDATE();

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

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

相关文章

Thinkphp--in-sqlinjection

一、漏洞原理 在 Builder 类的 parseData 方法中&#xff0c;由于程序没有对数据进行很好的过滤&#xff0c;将数据拼接进 SQL 语句&#xff0c;导致 SQL注入漏洞 的产生。 影响版本 5.0.13<ThinkPHP<5.0.15 5.1.0<ThinkPHP<5.1.5 在相应的文件夹位置打开终端…

【Kafka】Windows下安装Kafka(图文记录详细步骤)

【Kafka】Windows下安装Kafka Kafka简介一、Kafka安装前提安装Kafka之前&#xff0c;需要安装JDK、Zookeeper、Scala。1.1、JDK安装&#xff08;version&#xff1a;1.8&#xff09;1.1.1、JDK官网下载1.1.2、JDK网盘下载1.1.3、JDK安装 1.2、Zookeeper安装1.2.1、Zookeeper官网…

SpringCloud(微服务介绍,远程调用RestTemplate,注册中心Nacos,负载均衡Ribbon,环境隔离,进程和线程的区别)【详解】

目录 一、微服务介绍 1. 系统架构的演变 1 单体架构 2 分布式服务 3 微服务 2. SpringCloud介绍 SpringCloud简介 SpringCloud版本 3. 小结 二、远程调用RestTemplate【理解】 1. 服务拆分 1 服务拆分原则 2 服务拆分示例 1) 创建父工程 2) 准备用户服务 1. 用户…

03 Docker入门Dockerfile详解及镜像创建

1.1 使用 Dockerfile 构建镜像 新建一个 Dockerfile 文件vi Dockerfile 将下面的内容复制粘贴进去:## Base Images ## 从天池基础镜像构建(from的base img 根据自己的需要更换,建议使用天池open list镜像链接:https://tianchi.aliyun.com/forum/postDetail?postId=67720) F…

如何利用美国站群服务器实现有效的SEO优化策略?

如何利用美国站群服务器实现有效的SEO优化策略? 在当今数字化时代&#xff0c;SEO优化对于网站的可见性和吸引力至关重要。站群服务器作为一种有效的SEO策略&#xff0c;可以通过多个相关联的网站在不同服务器上的部署&#xff0c;增强网站的权威性和链接多样性。尤其是在利用…

Matplotlib是什么?

一、Matplotlib是什么&#xff1f; Matplotlib是一个Python语言的2D绘图库&#xff0c;它非常广泛地用于数据的可视化。以下是一些主要特点&#xff1a; 多功能性&#xff1a;它允许用户创建各种静态、动态或交互式的图表&#xff0c;如线图、散点图、直方图等。跨平台性&…

2024全国大学生高新技术竞赛——算法智星挑战赛(A~J)

好多都是之前的原题&#xff0c;甚至有上次第二届全国大学生信息技术认证挑战赛的原题&#xff0c;刚打完又来一遍&#xff0c;没绷住。 A. 手机 原题之一&#xff0c;具体出处忘了 最无脑的方法直接用map记录每个按下的值就行了&#xff0c;代码仅供参考。 #include <bit…

Android 11 裁剪系统显示区域(适配异形屏)

概述 在显示技术中&#xff0c;"OverScan"&#xff08;超扫描&#xff09;是一种调整显示图像边界的技术。通常情况下&#xff0c;OverScan 会在显示屏的边缘周围裁剪一小部分图像。这种裁剪是为了确保显示内容在屏幕上的完整可见性&#xff0c;尤其是在老式电视或投…

【缓存服务】⭐️自定义实现一个简易的数据缓存

目录 &#x1f378;前言 &#x1f37b;手写缓存服务 &#xff08;1&#xff09;缓存实体类 &#xff08;2&#xff09;缓存工具类 &#xff08;3&#xff09;测试缓存服务 &#x1f377;已有的缓存工具 &#x1f379;章末 &#x1f378;前言 俗话说 有轮子不用 就是玩 开个…

【kettle003】kettle访问SQL Server数据库并处理数据至execl文件

一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 熟悉、梳理、总结下Microsoft SQL Server 2022关系数据库相关知识体系 kettle访问SQL Server数…

关于远程桌面端口的优化措施的建议

在信息技术的世界中&#xff0c;远程桌面连接已成为企业、教育和个人用户之间共享信息、协作工作的重要工具。而这一切的背后&#xff0c;都离不开远程桌面端口&#xff08;RDP&#xff0c;Remote Desktop Protocol Port&#xff09;的支持。RDP端口不仅关乎到远程访问的顺畅性…

永磁同步电机SMO负载转矩观测matlab模型。

永磁同步电机SMO负载转矩观测matlab模型。 负载转矩的有效识别是提高伺服驱动系统抗负载扰动性能的关键之一。现在的传统结构的LTID滑模观测器存在频率抖动大&#xff0c;估计精度差的缺点&#xff0c;限制了其在高性能伺服系统中的应用。 本模型推导分析了传统LTID滑模观测器…

LLM大语言模型(十三):ChatGLM3-6B兼容Langchain的Function Call的一步一步的详细转换过程记录

# LangChain&#xff1a;原始prompt System: Respond to the human as helpfully and accurately as possible. You have access to the following tools: Calculator: Useful for when you need to calculate math problems, args: {\calculation\: {\description\: \calcul…

【软件安装】(十六)双系统Ubuntu22.04引导启动菜单的默认项

一个愿意伫立在巨人肩膀上的农民...... 好学的人总是喜欢在电脑上安装双系统&#xff0c;可是安装好系统之后&#xff0c;就会出现默认启动优先级的苦恼&#xff0c;如果在Bios中设置Windows引导启动为优先启动&#xff0c;那么每次想要进如Ubuntu系统就都需要重新设置Bios。如…

ubuntu的镜像源+bionic版本

首先第一步 查找和你自己ubuntu版本匹配的版本号 匹配代号如下 在终端输入lsb_release -a查看自己系统上的版本号 可以看到我这个版本号的代号是bionic。 每个版本的镜像文件都是有规律的。 bionic版本的源如下 # 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic ma…

舌头分割YOLOV8-SEG

舌头分割&#xff0c;基于YOLOV8-SEG&#xff0c;训练得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV的DNN调用&#xff0c;从而摆脱YOLO依赖&#xff0c;支持C,PYTHON,ANDROID开发 舌头分割YOLOV8-SEG

【小沐学Java】VSCode搭建Java开发环境

文章目录 1、简介2、安装VSCode2.1 简介2.2 安装 3、安装Java SDK3.1 简介3.2 安装3.3 配置 4、安装插件Java Extension Pack4.1 简介4.2 安装4.3 配置 结语 1、简介 2、安装VSCode 2.1 简介 Visual Studio Code 是一个轻量级但功能强大的源代码编辑器&#xff0c;可在桌面上…

记录些 LLM 常见的问题和解析

1、提示校准为什么有助于减轻基于提示的学习中的偏见? 提示校准包括调整提示&#xff0c;尽量减少产生的输出中的偏差。 其他&#xff1a;微调修改模型本身&#xff0c;而数据增强扩展训练数据&#xff0c;梯度裁剪防止在训练期间爆炸梯度。 2、是否需要为所有基于文本的LL…

优化大型语言模型交互:提升查询和提示效果的26条原则

推荐下arxiv挂的一个提示词教程&#xff1a; https://github.com/VILA-Lab/ATLAS https://arxiv.org/abs/2312.16171 它提出了一套26条指导原则&#xff0c;改善和优化与大型语言模型&#xff08;LLMs&#xff09;的交互过程。通过这些原则&#xff0c;旨在简化对LLMs的查询和…

LabVIEW飞机机电系统综合测试平台

LabVIEW飞机机电系统综合测试平台 在现代航空领域&#xff0c;机电系统的准确性与可靠性对飞行安全至关重要。针对飞机机电管理计算机&#xff08;UMC&#xff09;复杂度增加、测试覆盖率低、效率不高等问题&#xff0c;开发了一套基于LabVIEW的机电系统综合测试平台。平台通过…