当前位置: 华文世界 > 科技

AIGC辅助完成Python技术架构

2024-10-07科技

AIGC已经深入到方方面面,用好它能帮我们节省很多时间。特别是信息技术领域。AIGC的工具很多,这里主要使用Bito,当然也可以使用百度文小言、阿里通义、腾讯元宝、抖音豆包。Python是如今最流行的程序设计语言,多年的实践,已经积累并有了成熟的技术架构模式。这里是一个C/C++程序员,讲述基于AIGC和Python,快速搭建信息系统。

AIGC工具:bito

bito提供了很多形式的客户端,能够集成在集成开发环境(如idea、vscode)、作为浏览器插件(chrome)、直接在网页使用、也提供了命令行工具。用来辅助编程很不错。

https://bito.ai/

登录后的首页

Python技术架构

先用一张图描述下什么是Python技术架构。按照4A的设计理念,技术架构TA,与业务架构BA,应用AA,信息架构IA一起描述一个信息系统解决方案的系统架构。TA就是从使用的技术选择角度,要用合理的方式去支持解决方案的落地,基于一定的通用性,往往可以给出相对稳定的架构模式。下面的思维导图就是一种相对通用的架构模式,这里简单予以介绍:

Python技术架构模式

  • API : 系统的服务接口,这里列出了常见的概念。Restful是一个基于http协议的无状态API设计规范;OAutp是一个资源访问的通用授权设计模式;OpenAPI是一个产品,可基于同一的定义方式,帮助生成API的框架和相关文档。
  • ORM :数据的对象访问模式,统一了面向不同数据库的访问层。SQLAlchemy提供了轻量级的数据库访问模式,适合与任何web框架搭配;DJango则将ORM与WEB集成得很好,如果你的web框架选择了DJango,ORM也可用它。
  • Event : 通常一些非实时响应的服务,可以通过异步方式来处理。Celery能让异步服务做得更容易,实时业务服务可以通过触发事件来告知旁路系统启动工作。例如通知类、统计类业务,结束后形成日志或报表,供用户主动检索即可。如果逻辑比较重,也可以用airflow。
  • Testing : 测试环节这里主要列出了单元测试,开发者角度的工具,可以使用unittest和pytest来完成测试。
  • 调优 :程序运行性能出现问题,需要定位问题所在,cProfile等提供了很好的支持
  • 度量 : 开发的应用在生命周期中的真实访问模型是怎样的,能够有效保障系统可用性,使用Prometheus是个不错的选择
  • Package : 打包发布或者形成仓库,也是一个重要的话题。这里主要是形成可以使用pip管理的公共和私有库
  • API

    如果不知道RESTful、OAutp、OpenAPI是什么,可以直接询问bito。

    基于web服务的API,经过多年实践,推荐使用RESTful架构风格。这种风格将API与具体的资源结合起来,提供统一的方法POST、PUT、DELTE、GET,与http协议配合,能够提供标准可靠、足够灵活的无状态服务,有利于系统基于功能和性能的扩展,并可以借助http头实现缓存。

    RESTful是什么?

    OAutp是一种开放标准,主要用于授权,允许第三方应用程序在不暴露用户凭据的情况下访问用户在其他服务上 的资源。它是一个广泛使用的协议,尤其在 Web 和移动应用中,用于安全地授权用户访问 API。

    OAutp是什么?

    OpenAPI由swagger发展而来,定义了描述RESTful的规范,使用 YAML 或 JSON 格式编写,描述了 API 的端点、请求和响应格式、参数 、认证方式等信息。并提供了工具生成客户端和服务端的代码,获得了页面很多工具的支持,能降低程序员的编码量。

    OpenAPI是什么?

    ORM

    SQLAlchemy是一个小巧的ORM,能有效基于其他框架结合,不用理解数据之外的东西。

    SQLAlchemy是什么?

    DJango本来是一个WEB框架,内置了ORM。也提供了丰富的ORM能力。

    DJango作为ORM,请详细介绍下

    Event

    Celery是一个强大的异步任务处理工具,Airflow是一个工作流调度器。类比于java的quartz和activiti。可以针对性选择使用用来解决事件触发的各类服务。

    Celery是什么?

    Airflow是什么

    Testing

    unitest是内置于python的单元测试工具,提供了测试断言用来编写测试用例。

    unittest是什么

    pytest提供了更加丰富的单元测试和功能测试。需要安装库pip install pytest

    pytest是什么

    参考资料

    1. 本文涉及的代码 https://gitee.com/wapuboy/learning-programming-with-gauss/tree/master/code/python
    2. AIGC工具 https://bito.ai/
    3. TOGAF https://www.opengroup.org/