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

接上一篇让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
  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhyuli

您的鼓励是对我付出努力一种赞赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值