让AI给你写代码(10.2)具备调用本地库能力的AI小助手代码资源及简单介绍

news2024/11/15 17:58:41

接上一篇让AI给你写代码(10.1): 按接口编程的思想,统一利用内部和外部的接口,逐步扩展和提升AI编程能力
这篇我们将对照需要解决的问题,比较详细介绍一下AI小助手相关代码架构、实体,相关方法和工具。
对照10.1 新版AI小助手的需要做的流程如下:
在这里插入图片描述
与10.1流程图基本一致,仅增加一个本地知识库,存储输入的新接口方法的需求描述,目前没有参与流程,但为未来进一步利用打一个基础。以下我们逐步展开说明。

一、 实体资源
参与的实体主要有12个,
主体程序3个:
assistant/aiGenCodeNew.py 主程序
assistant/aiAssistant.py AI编程小助手类,包含了AI小助手所需所有方法和调度
assistant/localKnowledgeTool.py 操作本地ES索引

本地代码库(目录)1个
pythonRepository/

临时运行目录1个
testtool/

本地数据库(ES7)2个:
1) 本地接口知识库(ES索引): es_repository-interface_new
对应的初始化脚本: index_template/input_interface_new.txt

2)本地需求描述库(ES索引): es_repository-requirement_new
对应的初始化脚本:index_template/input_re_new.txt

工具类3个
dbtool/clearES.py 删除指定ES索引
dbtool/esBase2.py 利用预先训练模型建立本地知识库
dbtool/testOutput.py 导出本地知识库

代码资源列表
在这里插入图片描述

二、 主要运行程序及相关方法
1、 aiGenCodeNew.py 主程序

from langchain_community.llms import Tongyi
import ...

dashscope.api_key = "XXXXXX"      #  千问大模型的用户key

if __name__ == '__main__':
    os.environ["DASHSCOPE_API_KEY"] = dashscope.api_key
    llm = Tongyi(model_name="qwen-max", streaming=True, temperature=0)

    assistant = Assistant(llm)  # 初始化小助手 
    while True:
        try:
            # 进入对话 
            user_input = input("请输入您的问题:")
            similarDocs = assistant.local_interface_db.searchKnowledge(user_input)   # 匹配本地库
            summary_prompt = "".join([doc.page_content for doc in similarDocs])  # 找到最接近的描述doc
            summary_prompt = assistant.local_interface_db.searchKnowledge(summary_prompt)  # 确定需要生成的函数类型

            raw_code = assistant.genCode(user_input, summary_prompt)  # 提交给大模型生成代码
            print('raw_code::', raw_code)
            print('\n')

            # 执行程序
            result = assistant.py_repl_tool_list(raw_code)
            print('result::', result)
            print('\n')

            # 遍历执行结果,保存接口函数
            for i in range(len(result)):
                if result[i]['exec_succ']:
                    # AI小助手生成接口说明,并保存接口函数
                    assistant.saveInterfaceDesc(result[i]['code'])
                    continue

            # 储存需求到本地库
            assistant.local_requirement_db.insertKnowledge(user_input)
            print('本轮处理完毕' + '\n')

        except KeyboardInterrupt:     
            break

        except Exception as e:
            print("执行异常: %s" % e)
            traceback.format_exc()

2、 aiAssistant.py AI小助手类
限于篇幅,除了这次新增的方法,其他方法只列出方法名和用途,具体做法可以参考之前的博客文章

from langchain

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

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

相关文章

Docker部署nginx容器无法访问80端口

问题说明 在阿里云ECS服务器上部署一台CentOS服务器,然后在里面安装了docker服务。用docker部署了nginx,开启docker中的nginx服务,映射宿主机端口80 把阿里云服务器上面的安全组放开了80端口 但是还是无法访问nginx的80web界面 问题分析 查…

油猴脚本安装,3种安装方法

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f495…

并发编程:AQS(上)

一、AQS 是什么? AQS 的全称为 AbstractQueuedSynchronizer ,翻译过来的意思就是抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。 AQS 就是一个抽象类,主要用来构建锁和同步器。 public abstract class AbstractQueuedSynch…

怎么抓住威士忌蓝海市场?

​前些天和朋友吃饭,聊起来威士忌。 朋友说,这个威士忌啊,最近几年增值特别快,甚至超过了黄金、名表、艺术品、红酒这些经典的投资品类。而且存放得越久,升值的幅度就越大。 再加上,中国的威士忌市场现在…

3GPP NTN定义了哪些band?

卫星频段主要包括以下几种: L波段(1–2 GHz):主要用于移动卫星通信、导航系统和无线电测绘。例如,全球定位系统 (GPS) 运营商以及卫星移动电话,如 Iridium和 Inmarsat提供海上、陆地和空中通信。 S波段(2–4 GHz):广泛…

【C++ Primer Plus习题】13.3

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include <string> #inc…

[Unity]如何让选择区域(照射范围)内的物体实时高亮

前言 最近希望在Unity里实现这样一个功能&#xff1a; 黄色半透明部分是一个手电筒&#xff0c;我希望手电筒范围内的小球会高亮轮廓&#xff0c;且手电筒移出去后小球会恢复原来的样子&#xff1a; 一开始我把整个问题想的太复杂了&#xff0c;想着在Update()函数里暴力检…

使用Python自动抓取亚马逊网站商品信息

全量数据抓取不现实&#xff0c;但可以自动化、小批量采集亚马逊数据&#xff0c;现在可用的工具也非常多&#xff0c;包括Python以及一些专门的爬虫软件&#xff0c;我用过几个比较好入手的&#xff0c;像web scraper、八爪鱼、亮数据。 比如亮数据爬虫&#xff0c;它提供数据…

408:强化笔记|王道|DS|OS|CO|计网

目录 DS 数据结构算法题一、快速排序二、二路归并排序三、链表(2.3课后习题)四、二叉树五、图应用题 OS 操作系统第二章 进程与线程零、大观一、PV操作 第三章 内存管理一、内存管理大题 CO 计算机组成原理第三章 存储系统一、Cache大题二、TLB大题 第二章 数据的表示和运算第四…

Nginx之日志切割,正反代理,HTTPS配置

1 nginx日志切割 1.1 日志配置 在./configure --prefixpath指定的path中切换进去&#xff0c;找到log文件夹&#xff0c;进去后找到都是对应的日志文件 其中的nginx.pid是当前nginx的进程号&#xff0c;当使用ps -ef | grep nginx获得就是这个nginx.pid的值 在nginx.conf中…

安全测试:全面指南!

引言 随着互联网技术的快速发展&#xff0c;网络安全威胁日益增多。企业不仅需要保护其数据资产免受外部攻击&#xff0c;还需要确保内部系统的安全性。安全测试作为软件开发生命周期中的关键环节&#xff0c;旨在识别潜在的安全漏洞和风险点&#xff0c;从而提高产品的整体安…

Return arguments from function calling with OpenAI API when streaming?

题意&#xff1a;在使用OpenAI API进行流式传输时&#xff0c;如何返回函数调用的参数&#xff1f; 问题背景&#xff1a; Ive made a simple OpenAI API example with function calling. Im only using function calling to format the response, Im not calling multiple fu…

沪农商行半年报“双正增”:分红率提升,业绩增速却放缓明显

《港湾商业观察》施子夫 王璐 虽然上半年业绩增速上有所放缓&#xff0c;但沪农商行(601825.SH)33%的分红率至少对投资者来说无疑是个好消息。 今年上半年&#xff08;报告期内&#xff09;&#xff0c;沪农商行实现营业收入139.17亿元&#xff0c;同比增长0.23%&#xff1b…

TikTok运营需要的独立IP如何获取?

TikTok作为当下炙手可热的社交媒体平台&#xff0c;吸引了众多个人创作者和企业进驻。在进行TikTok运营时&#xff0c;许多经验丰富的用户都倾向于选择独立IP。那么&#xff0c;TikTok运营为什么需要独立IP&#xff1f;又该如何获取呢&#xff1f;本文将详细为您解答这些问题。…

HivisionIDPhotos

在服务器Ubuntu22.04系统下&#xff0c;HivisionIDPhotos的部署 一、安装环境&#xff1a;ubuntu基本环境配置1.更新包列表&#xff1a;2. 安装GPU驱动程序3.查看显卡信息4.下载并安装 CUDA 12.3 二、安装miniconda环境1. 下载miniconda32. 安装miniconda33. 打开用户环境编辑页…

英文站外链如何建设?

在建设英文站外链时&#xff0c;关键在于高质量和低质量&#xff08;数量多&#xff09;链接的合理搭配。几百条外链想提升网站是不现实的&#xff0c;所以数量是绝对的&#xff0c;当然&#xff0c;更重要的是&#xff0c;这些外链能够为你的网站SEO带来实际的提升 GPB外链就是…

Vue学习:计算属性Computed

计算属性可以实时监听 data节点中数据的变化&#xff0c;并 return 一个计算后的新值&#xff0c;供组件渲染 DOM 时使用&#xff0c;计算属性需要以 function 函数的形式声明到组件的 computed 节点中。 计算属性的使用注意点&#xff1a; &#xff08;1&#xff09;计算属性…

PDF转换器竟能如此简单?这款工具让无数人为之疯狂,你试过吗?

现在大家都用电脑办公&#xff0c;PDF文件因为不管在哪儿都能打开&#xff0c;而且内容不会乱&#xff0c;所以特别受欢迎。但有时候也挺麻烦的&#xff0c;比如你得改改里面的内容或者转成别的格式。到了2024年&#xff0c;如果你还被PDF文件搞得头疼&#xff0c;那就试试这四…

Cross Explosion

考查找。 线性查找上下左右四个方向看到的第一个的墙的位置复杂度O(n^2)&#xff0c;在Q取到2e5的情况下直接爆掉。 这里应使用二分查找&#xff0c;对某一行、列进行二分&#xff0c;使用set实现墙的位置存储。 #include<bits/stdc.h> using namespace std; #define…

IBM中国研发部裁员:全球化背景下的IT产业变局与应对之道

裁员风波中的思考与机遇 前言了解霍尼韦尔的“东方服务东方”施耐德电气的“中国中心”战略对比与分析 中国信息技术(IT)行业展现出蓬勃发展的前景**政府支持与政策导向****技术创新与应用****市场规模与需求****人才培养与就业**国际化与开放合作总结 前言 如何看待IBM中国研发…