国科网

2025-06-18 22:51:14  星期三
立足国科融媒,服务先进科技
如何用ChatGPT把控应用程序生命周期

点赞

0
发布时间:2023年12月21日 浏览量:149次 所属栏目:人工智能 发布者:田佳恬

译者 | 朱先忠

审校 | 重楼

简介

在本文中,我们将从基础设施供应到配置管理和部署等各个环节来全方位探讨大型语言模型(LLM)是否适合应用于实际应用程序的生命周期开发。这项工作产生的源代码工程已经在GitHub上公开([参考资料11])。基础设施即代码(IaC:Infrastructure as Code)解决方案通过代码而不是手动流程来促进应用程序基础设施的管理和供应([参考资料1])。

当下,这种技术的应用越来越普遍,一些主流的云提供商已经实现了他们自己风格的IaC解决方案,用于与他们所提供的服务进行交互。在这方面,亚马逊CloudFormation、谷歌的云部署管理器和微软的Azure资源管理器模板都成功简化了云服务端的供应,消除了IT运营人员手动启动服务器、数据库和网络的需要。然而,这许多的可能性也导致了供应商锁定的风险,因为给定云提供商所需IaC的定义是不可移植的,并且如果需要不同的云提供商的话,则需要在它们之间进行转换。

值得欣慰的是,在这方面,像Terraform([参考资料2])或Pulumi([参考资料3])这样的工具提供了对不同云提供商的各种实现的抽象,并促进了便携式部署的开发。通过这种方式,供应商锁定的风险大大降低,应用机构就可以对其需求做出动态反应,而不会产生显著的实施成本。除此之外,IaC技术还带来了许多好处([参考资料4]):

  • 一致性:通过实现可重复的部署,实现了基础设施供应的自动化。
  • 降低风险:促进了对基础设施管理的不易出错的近似,因为手动干预被最小化。
  • 成本优化:可以更容易地识别不必要的资源,有利于在云提供商之间更快地迁移以应对计费变化。
  • 改进的协作:可以把脚本集成到版本控制工具中,从而促进个人和团队之间的协作。但是,这样一来,应用程序的生命周期超出了基础架构资源调配的范围。下图显示了使用不同IaC技术支持的应用程序生命周期([参考资料5])。

“基础结构即代码(IaC)”技术支持的应用程序生命周期。|资料来源:Josu Diaz de Arcaya等人([参考资料5])。

在这种情况下,IaC技术的目标不仅仅是提供基础设施资源。在启动必要的基础设施之后,配置管理阶段可确保所有需求都得到适当的安装。此阶段通常使用Ansible([参考资料6])、Chef([参考资料7])、Puppet([参考资料8])等工具来完成。最后,应用程序部署通过各种基础设施设备来监督应用程序的协调性。

认识LLM

大型语言模型(LLM)是指一类人工智能模型,旨在根据提供给它们的输入来理解和生成类似人类的文本。这些模型以其大量的参数而闻名,这些参数使它们能够捕捉语言中的复杂模式和细微差别([参考资料9])。

  • 文本生成:LLM创建的文本可以具有凝聚力,并与其周围环境相关。这些技术可以用来完成文本、制作材料,甚至进行创造性写作等活动。
  • 自然语言理解:LLM能够理解和提取文本中的信息。它们能够进行态度分析、文本分类和信息检索。
  • 翻译:LLM可以将文本从一种语言翻译成另一种语言。这对机器翻译应用非常有益。
  • 回答问题:LLM可以根据给定的上下文回答问题。它们经常被应用于聊天机器人和虚拟助理,以回答用户的查询。
  • 文本摘要:LLM可以将长段落的文本总结为更短、更连贯的摘要。这对于浓缩信息以便快速利用的领域需求非常有用。在上述诸多功能中,我们将专注于文本生成方面的讨论。特别是,在基于输入提示生成正确的IaC代码的能力方面,大型语言模型(LLM)在自然语言处理领域取得了重大进展,但也提出了一些挑战和令人担忧的问题。目前情况下,与LLM相关的一些关键问题和关注点包括:
  • 偏见和公平性:LLM可以学习它们所训练的数据中存在的偏见信息,由此可能导致存在偏见或不公平的结果。
  • 错误信息和虚假信息:LLM可能产生虚假或误导性信息,这可能会导致错误信息在网上的传播。这些模型有可能创造出看似可信但事实上不正确的内容。
  • 安全和隐私:LLM可能被滥用来生成恶意内容,如深度伪造文本、假新闻或钓鱼性质的电子邮件等。

下表展示了各种LLM之间的比较情况。

使用大型语言模型生成IaC

为了测试当前LLM工具在IaC领域的性能,我们设计了一个测试性质的应用程序。此案例的最终目标是使用基于Python的服务器端FastAPI框架在虚拟机中构建一个API,该框架允许客户端使用HTTP方法在Elasticsearch集群中执行搜索和删除任务。

此集群将由三个节点组成,每个节点都位于自己的虚拟机中;在另一台机器中安装Kibana,这是一个支持可视化的集群管理工具。当然,此实验案例设计的一切都必须安装在AWS云环境中。下图显示了此案例的体系结构:

设计用于测试LLM生成IaC的可行性的应用案例设计用于测试LLM生成IaC的可行性的应用案例

开发过程中,具有挑战性的任务在于使用LLM工具成功完成以下三项任务。在本文中,我们使用了OpenAI公司的ChatGPT模型。

  1. 编写Terraform声明式编码,以便在AWS云平台中使用五个虚拟机构建基础设施。
  2. 编写FastAPI应用程序的源代码,通过基于API的HTTP方法执行文档搜索和删除操作。
  3. 编写Ansible自动化管理代码,用于在三个节点上部署和安装Elasticsearch集群、在另一个节点上安装Kibana以及在其余节点上安装FastAPI应用程序的可靠代码。

挑战任务#1

对于上面的挑战1,我们针对ChatGPT模型使用了英文提示,翻译成中文后大致意思是:

“我需要通过Terraform在您想使用的公共云提供商处创建五个虚拟机。这些虚拟机的用途如下:其中三个用于部署Elasticsearch集群,该集群每天将接收2G的数据;另一个是Kibana;最后一个是部署FastAPI应用程序。您应该为每个虚拟机选择硬件,并为每个虚拟机器选择云提供商。对于您不知道的变量,使用变量作为占位符即可。最后,请推荐使用廉价的应用实例。”

ChatGPT模型最初的响应很好,但是我们需要不断迭代。例如,我们希望在一个单独的文件中定义所有变量,这导致了下面的配置代码。

variable "region" {
 description = "Region where the resources will be provisioned"
 default = "us-west-1"
}

variable "instance_type_elasticsearch" {
 description = "Instance type for Elasticsearch nodes"
 default = "t2.micro"
}

variable "instance_type_kibana" {
 description = "Instance type for Kibana"
 default = "t2.micro"
}

variable "instance_type_fastapi" {
 description = "Instance type for FastAPI application"
 default = "t2.micro"
}

variable "ami" {
 description = "AMI ID for the virtual machines"
 default = "ami-0f8e81a3da6e2510a" 
}

variable "my_ip" {
 description = "Your public IP address"
 default = "0.0.0.0/0"
}

variable "ssh_port" {
 description = "Port for SSH access"
 default = 22
}

variable "http_port" {
 description = "Port for HTTP access"
 default = 80
}

variable "https_port" {
 description = "Port for HTTPS access"
 default = 443
}

variable "key_name" {
 description = "Name of the SSH key pair"
 default = "my-key-pair"
}

分享说明:转发分享请注明出处。

    相关图讯
    网站简介  |   联系我们  |   广告服务  |   监督电话
    本网站由国科网运营维护 国科网讯(北京)技术有限公司版权所有  咨询电话:010-88516927
    地址:北京市海淀区阜石路甲69号院1号楼1层一单元114
    ICP备案号:京ICP备15066964号-8   违法和不良信息举报电话:010-67196565
    12300电信用户申诉受理中心   网络违法犯罪举报网站   中国互联网举报中心   12321网络不良与垃圾信息举报中心   12318全国文化市场举报网站
    代理域名注册服务机构:阿里巴巴云计算(北京)有限公司