微服务gptapi开发记录(一)

最近跟着网上在弄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."

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

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

相关文章

Spring:JDBCTemplate 的源码分析

一:JdbcTemplate的简介 JdbcTemplate 是 Spring Template设置模式中的一员。类似的还有 TransactionTemplate、 MongoTemplate 等。通过 JdbcTemplate 我们可以使得 Spring 访问数据库的过程简单化。 二:执行SQL语句的方法 1:在JdbcTempla…

前端性能优化:Vue项目打包后app.xxx.js 和 chunk-vendors.xxx.js 文件太大,导致页面加载时间太长

问题场景,如下图,环境上的 app.js 和chunk-vendors.js 两个文件大小,高达3.4M 和 2M ,加载所耗费的时间也很长。 下面说一下如何解决: 1、首先需要安装插件 compression-webpack-plugin,我这里用的是6.1.1…

情人节送什么礼给男朋友合适?适合送男友的礼物合集

情人节即将来临,作为贴心的女友,你是否已经开始为男友精心挑选礼物了呢?为了让这个特殊的日子充满温馨与甜蜜,选择一份既实用又充满心意的礼物是至关重要的,下面为大家推荐一些适合在情人节送给男友的好物,…

探索自然语言处理在改善搜索引擎、语音助手和机器翻译中的应用

文章目录 每日一句正能量前言文本分析语音识别机器翻译语义分析自然语言生成情感分析后记 每日一句正能量 努力学习,勤奋工作,让青春更加光彩。 前言 自然语言处理(NLP)是人工智能领域中与人类语言相关的重要研究方向&#xff0c…

搭建gitlab仓库

yum安装gitlab仓库 搭建gitlab仓库 配置yum源 vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] namegitlab-ce baseurlhttps://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7 gpgcheck0 Repo_gpgcheck0 Enabled1 Gpgkeyhttps://packages.gitlab.com/gpg.keysudo yum ins…

腾讯主导制定全球首个车载小程序国际标准,助力车载应用生态发展

2024年1月,国际电信联盟标准部门(ITU-T)正式发布了由腾讯主导制定的《F.749.8 In-vehicle multimedia applets: Framework and functional requirements》(车载多媒体小程序框架和技术需求)国际标准。 这是全球首个由中国企业主导制定的车载小…

LNMP环境搭建动态网站

一、环境准备 服务器:openEuler 22.03 Linux IPV4 :192.168.110.144/24 网页服务器:Nginx1.21.0 数据库:MySQL 8.0.36 PHP:8.0.30 1.安装软件 [rootnode3 ~]# yum install php-mysqlnd php php-gd php-fpm php-xml -y…

在ESXi中部署时出现the host does not support intel vt-x

在VCenter中新建了一台ESXi用于部署VCSA进行实验 在部署VCSA的第二阶段,出现the host does not support intel vt-x,部署失败。 解决办法:点进ESXi虚拟机的设置界面(要先关机),将硬件虚拟化打开&#xff0c…

Socket.D 协议的开发缘由

为什么搞个新协议? 2021年时,想为 Solon 生态 提供一种 MVC 体验的 Socket 和 WebSocket 开发方式。这个想法,要求消息“能路由”、“有元信息”、“可建立关联性”。于是就开发了 Socket.D 早期版本(算是草案版)。经…

关于Odoo Bus 总线库

Odoo 是一款流行的开源业务管理软件,拥有许多用于管理各种业务流程的应用程序,例如会计、销售、库存等。 Odoo Bus 是一个消息传递系统,允许 Odoo 中的客户端和服务器之间进行实时通信。 Odoo Bus 库是一个用于在 Odoo Bus 上构建实时应用程序…

【Vue3+Vite】路由机制router 快速学习 第四期

文章目录 路由简介路由是什么路由的作用 一、路由入门案例1. 创建项目 导入路由依赖2. 准备页面和组件3. 准备路由配置4. main.js引入router配置 二、路由重定向三、编程式路由(useRouter)四、路由传参(useRoute)五、路由守卫总结 路由简介 路由是什么 路由就是根据不同的 URL…

正点原子--STM32中断系统学习笔记(2)

引言 上篇帖子STM32中断系统学习笔记(1)是理论,这篇帖子开始实战,目标是通过按键实现LED的控制。 1.工程建立 以正点原子HAL库 实验1 跑马灯实验为基础,复制工程,在“Drivers--BSP”目录下建立EXTI文件夹,并创建ext…

Spring Cloud Gateway 修改请求体、响应体

前言 例行每半年一次的工作轮换,接手了同事的网关服务 年底了工作不是很忙,看了下前人的代码,虽然都能读懂,但感觉应该可以再优雅一点 于是把网关的相关知识又翻阅了一下 官方资料 PS:这里如果按新方案调整的话&#…

Windows - 防火墙 - 如何开启单个端口以供Web应用访问(以82端口为例) - 开启端口后还是访问失败了?

Windows - 防火墙 - 如何开启单个端口以供Web应用访问(以82端口为例) - 开启端口后还是访问失败了? 前言 在网上搜“防火墙开启某个端口”供其他机器访问,都是只讲到了“如何允许某个端口被访问”,而没有后续了。 我之前就遇到过这个问题&…

数据据库八之 视图、触发器、事务

【零】准备数据 【1】创建表 (1)部门表 d_id是部门的编号d_name是部门的名字 # 确保表不存在 drop table if exists department; # 创建表 create table department( d_id int auto_increment primary key, d_name varchar(6) )auto_increment 501 …

STM32-GPIO输入——按键检测

1 软件设计 为了使程序更有条例,方便移植在“工程模板”之上新建“bsp_key.c”及“bsp_key.h”文件,这些文件也可根据您的喜好命名,这 些文件不属于STM32HAL库的内容,是由我们自己根据应用需要编写的 1.1 编程要点 1&#xff…

2024-01-06-AI 大模型全栈工程师 - 机器学习基础

摘要 2024-01-06 阴 杭州 晴 本节简介: a. 数学模型&算法名词相关概念; b. 学会数学建模相关知识; c. 学会自我思考,提升认知,不要只会模仿; 课程内容 1. Fine-Tuning 有什么作用? a. 什么是模型训练&#xff…

Linux(一)

目录结构 【在 Linux 世界里,一切皆文件】 linux 的文件系统是采用级层式的树状目录结构; 序号名称介绍备注1/:根目录一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始; 当…

机器学习1-种类及应用

机器学习主要包括以下几种主要的种类: 1. 监督学习(Supervised Learning) 在监督学习中,模型通过使用已标记的训练数据(包括输入和对应的输出)来学习预测目标变量。常见的任务包括回归和分类。应用&#xf…

Docker进阶篇-Docker微服务实战

一、通过IDEA新建一个普通微服务模块 1、建Moduel <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation…