当前位置:   article > 正文

微服务gptapi开发记录(一)_gpt api system

gpt api system

最近跟着网上在弄gpt微信公众号

最近主要做了几件事情

1.深入学习了springboot的原理和技术框架

2.学习了http访问的相关

3.实现了公众号跟本地springboot的对接

4.实现了本地调用gpt的gpt3.5-api成功。

第一:springboot的原理和技术框架。

springboot是微服务的一种框架,微服务的业务目标是:

1.简化大型系统的跨组织沟通,解耦各功能间的相互影响,让各模块专注本身模块的开发

2.让大型系统能承载更多的业务流量

3.让大型系统更稳定

spring中为了实现这些目标,设计了三种设计模式和思想。

1.解耦模块,所以提了个控制反转这种思想,在spring中通过依赖注入这种具体技术来实现控制反转,依赖注入说白了就是把类B的实例的实现初始化放在类A外面,通过把B具体的实例通过参数传递给A,在A中不用去初始化或者实例化类B,那么类B是由谁来实例化的呢?在spring中由spring的IOC来统一进行类的实例化。

2.业务外包,面向切面的编程的业务目标就相当于现在的业务外包,让自己专注于主要目标和功能,次要功能由外部第三方来实现;或者是让自己专注于不变化的功能,而让变化的功能在不同的场景下由不同的三方来实现。比如一个对象,他里面的日志记录功能,就可以让三方来实现,而他自己专注业务本身的功能;同时在不同的场景下可以使用不同的日志。

面向切面的编程通过注解来实现,要被抽取的类上不做任何注解,而是把被抽取的内容称为切面,并所有注解都在该内容上什么,整体抽取的内容会被重新申明为一个类,通过@aspect来标识为切面,类里面具体方法就是具体被抽取出来的内容前面,通过@pointcut标识为切点execution标识具体被切对象的那个方法前后调用该内容(有点乱,而且不容易懂,后面有了更形象的说明再来更新)

3.减少开发工作量,通过约定大于配置,就是通过一些关键字表示配置,比如注解来表示很多信息(感觉像新的开发语言了),xml是之前配置表现的最多的形式,在以前我们要写代码去都xml的信息,然后进行具体处理,那么现在我们在代码里面直接写注解,就可以把很多关键字映射到其他代码里面的逻辑操作。

其实前面两点对我来说都还好理解,因为做过实际开发的,知道代码编写的套路。对于第三点约定大于配置就真的需要去记住有哪些约定,这些约定是约定了什么内容,不然在看的时候只看到约定的关键字,完全不知道在干什么

约定大于配置

spring boot starter启动器

spring定义了一些相关软件包,通过springbootstarter关键字,springboot框架让maven或gradle自动导入这些软件包。这些软件包一般是基础的运行组件等,比如web服务,开发需要的软件库等

spring boot atuo configuration自动配置

@ConditionalOn***就是指在满足这个条件下然后使用这里的配置,这个下面是跟对参数的设置或修改(配置其实根本目标就是传递具体参数内容)

Springboot actuator运行信息

通过一些约定好的端点(就是http://***/info,http://**/health),通过访问这些端点可以获取一些运行信息。开发人员还可以通过实现endpoint接口来定义自己的端点

yam参数配置

在yam文件中定义key-value,在代码中直接通过@value来获取Key-value

其他重要的约定

@SpringBootApplication:主程序

@Controller:用于标识一个类是 Spring MVC 控制器,处理 HTTP 请求。

@RequestMapping: 用于映射 HTTP 请求路径到处理方法。 @controller和@RequestMapping一般一起使用

@Service: 用于标识一个类是业务服务类。

@Autowired:自动装配,用于注入 Spring 管理的 Bean。

第二:http访问

http是用来解决跨系统的数据交换(最开始http是超文本协议,用来传输超链接的,以前的忽略)

为什么用http而不直接用socket的来传输数据?socket会比较麻烦,http已是基于socket tcp连接的,所以http的底层连接是有状态的连接,但是Http本身是没有状态的连接,所以后来引入了sesion,cokie等来标识连接之间的关系。

http相当于把网络业务数据通信进行了标准化定义,包括访问方式,数据格式等

访问方式:

  • 通过web客户端,web服务器,mvc控制器来进行连接管理。

这种情况一般用做网页开发

  • 通过python的http库,自己手写发起http信息交互连接。

这种一般用作分布式系统数据交互,这已就是restful,

restful与http的关系

restful的目标是分布式系统的具体数据的交互。关注资源的定义和通过http方式来交互,相当于把http里面的内容信息用来做key-value这种数据交互,而这种方式一般是不用于web开发,而是用在分布式系统的数据交互。

第三:公众号的对接

公众号对接业务目的:确定在微信公众号上展示什么内容(微信公众号只是个展示平台,展示内容和展示方式由三方程序决定 )

对接方式:

restful api的方式。

对接规则:

  1. 在微信公众号上设置你服务器用来接收消息的地址(url形式的)
  2. 在微信公众号上设置token(随意取值)
  3. 随机获取加密密钥
  4. 第一期启动,需要在服务器上编写接收消息的Http接收处理,给公众号返回消息(返回消息的规则后面补充)
  5. 以后启动就直接可以在公众号上启动接口

第四:gptai api对接

gptai api的业务目的:

让三方通过api的方式来使用大模型。

调用方式:可以通过库,可以通过restful api的方式。

关键参数信息:

  1. 断点信息:就是restful api访问的URL地址,https://api.openai.com/v1/chat/completions(聊天端口,还有其他图像,音频,文件等端口)
  2. apikey:在oepnai官网申请
  3. Content-Type: application/json
  4. Authorization: Bearer $OPENAI_API_KEY" 
  5. "model": "gpt-3.5-turbo-1106",
  6. "messages": "role": "system",
  7.  "messages": "content": "You are a helpful assistant."

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/875441
推荐阅读
相关标签
  

闽ICP备14008679号