litserve openapi schema 处理简单说明

litserve openapi schema 处理简单说明

litserve 在处理openai schema 的时候实际上还是利用了fastapi 的能力,只是litserve 抽象了api 开发的处理,对于openapi request 以及response 的类型基于了动态获取(通过python 的inspect 模块)

参考处理

  • server.py

register_endpoints

def register_endpoints(self):self._register_internal_endpoints()for lit_api in self.litapi_connector:# 获取lit_api 几个方法的签名,包含了request 以及response,decode_request 处理request 类型,encode_response 处理response 类型decode_request_signature = inspect.signature(lit_api.decode_request)encode_response_signature = inspect.signature(lit_api.encode_response)request_type = decode_request_signature.parameters["request"].annotationif request_type == decode_request_signature.empty:request_type = Requestresponse_type = encode_response_signature.return_annotationif response_type == encode_response_signature.empty:response_type = Responseself._register_api_endpoints(lit_api, request_type, response_type)

_register_api_endpoints 内部实际就是标准的fastapi 动态注册路由,此处会判断是spec 还是普通的litapi

def _register_api_endpoints(self, lit_api: LitAPI, request_type, response_type):"""Register endpoint routes for the FastAPI app."""self._callback_runner.trigger_event(EventTypes.ON_SERVER_START.value, litserver=self)# Create handlershandler = StreamingRequestHandler(lit_api, self) if lit_api.stream else RegularRequestHandler(lit_api, self)# Create endpoint functionasync def endpoint_handler(request: request_type) -> response_type:return await handler.handle_request(request, request_type)# Register endpointif not lit_api.spec:self.app.add_api_route(lit_api.api_path,endpoint_handler,methods=["POST"],dependencies=[Depends(self.setup_auth())],)# Handle specsself._register_spec_endpoints(lit_api)# Register middlewareself._register_middleware()

说明

litserve 的内部实际上是利用了inspect 模块以及动态路由注册的模式实现openapi schema 处理的,了解此机制还是比较重要的,可以编写更好的方法

参考资料

src/litserve/server.py

https://docs.python.org/zh-cn/3.9/library/inspect.html

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

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

相关文章

自己做的网站显示不全服务器地址怎么查

一、介绍 在流媒体协议中,常用的流媒体协议主要有 HTTP协议,RTSP协议和RTMP协议。 在国内视频网站多采用HTTPMP4或者HTTPFLV协议传输视频,而国外使用RTMP,RTSP等专门的流媒体格式。 二、协议介绍 1、HTTP协议: HTTP的视频协议…

阜蒙县建设小学校官方网站网站开发肇庆培训

2578. 最小和分割 - 力扣(LeetCode) 给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中…

网站外链内链怎么做短视频公司网站建设方案

在新手引导每一步中实现可以遮掉其他部分而显示当前需要点击的部分,只需要在每一步引导的时候设置对应的镂空区域的RectTransform.效果如下图: 代码: public class SelfMaskSet : MaskableGraphic, ICanvasRaycastFilter {[SerializeField]p…

内丘网站福州网站建设服务

我们可以建立template classes,使它们能够神奇地操作任何类型的资料。下面这个例子是让CThree 类别储存三个成员变量,成员函数Min 传回其中的最小值,成员函数Max 则传回其中的最大值。我们把它设计为template class&…

河北省住房和城乡建设网站微信营销管理系统

一、游戏介绍 木棒每保持平衡1个时间步,就得到1分。每一场游戏的最高得分为200分每一场游戏的结束条件为木棒倾斜角度大于41.8或者已经达到200分。最终获胜条件为最近100场游戏的平均得分高于195。代码中env.step(),的返回值就分…

芜湖市住房和城乡建设厅网站阿里巴巴做网站多少钱

数组(Array) 数组是计算机编程中最基本的数据结构之一。它是一个有序的元素集合,每个元素都可以通过索引进行访问。本文将详细介绍数组的特性、用法和注意事项。 数组的基本特性 数组具有以下基本特性: 有序性: 数…

广西住房和城乡建设厅官方网站乐清网站改版公司

13.jsp-config jsp-config元素主要用来设定JSP的相关配置,<jsp:config>包含<taglib>和<jsp-property-group>两个子元素.当中<taglib>元素 在JSP 1.2时就已经存在了;而<jsp-property-group>是JSP 2.0新增的元素. taglib :对标记库描写叙述符文件&…

国外做设计的网站有哪些河北邯郸特产

文章目录 1. 如何设计一套权限系统1.1 目标1.2 权限模型1.2.1 模型一RBAC1.2.2 模型二ABAC 2.如何实现菜单的创建&#xff1f;2.1 表结构2.2 前端实现2.3 后端实现 3. 如何实现角色的创建&#xff1f;4.如何给用户分配权限 —— 将菜单赋予角色&#xff1f;5.如何给用户分配权限…

江西建设推广网站博物馆门户网站建设

定义和用法 splice() 方法用于添加或删除数组中的元素。 注意&#xff1a;这种方法会改变原始数组。 返回值 如果仅删除一个元素&#xff0c;则返回一个元素的数组。 如果未删除任何元素&#xff0c;则返回空数组。 主要&#xff1a;array.splice(index,howmany&#xff09…

大公司网站开发化学sem是什么意思

1024徽章 嘤嘤嘤&#xff0c;我TM直接白嫖!

wordpress 多站点主题哪些品牌网站做的好

现在很多用户保存文件都会选择保存到网盘&#xff0c;喜欢的音乐也是一样&#xff0c;网易云音乐早已引入了云盘功能&#xff0c;不过上传的方法相信有很多朋友都不知道&#xff0c;下面小编为大家带来网易云音乐把音乐上传到云盘的步骤方法&#xff0c;感兴趣的朋友可以进来了…

dw 如何做自适应网站手机多少钱

目录 Web站点部署流程(部署聚合支付后台) 项目文件 将上传的文件解压文件至根目录 修改站点关键信息 设置伪静态,选择:thinkphp,并保存 设置PHP,选择:70+版本即可。 安装网站 1设置运行目录

网站建设总结ppt洛阳做网站多少钱

1、效果 如下图所示&#xff0c;我们在输入大学时&#xff0c;程序会到后端查询名字中包含大学的数据&#xff0c;并展示到前端页面。 用户选择一个大学&#xff0c;该大学值会被赋值到input表单&#xff0c;同时关闭下拉表单&#xff1b; 当页面展示的数据都不符合条件时&…

dede做的网站怎样去换模版wordpress 手动 摘录

阿里云2核4G服务器多少钱一年&#xff1f;2核4G配置1个月多少钱&#xff1f;2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年。可以在阿里云CLUB中心查看 aliyun.club 当前最新2核4G服务器精准报价、优惠券和活动信息。 阿里云官方2…

杰奇怎么做网站地图重庆网站建设总结与体会

【现代密码学】笔记5--伪随机置换&#xff08;分组加密&#xff09;《introduction to modern cryphtography》 写在最前面5 伪随机排列实践构造&#xff08;块密码/分组密码&#xff09; 写在最前面 主要在 哈工大密码学课程 张宇老师课件 的基础上学习记录笔记。 内容补充&…

河南信阳网站建设公司电话做app和网站哪个

最近在react项目中需要一个树状组件&#xff0c;但是又不想因为这个去引入一套UI组件&#xff0c;故自己封装了一个基于react的树状组件&#xff0c; 个人认为比较难得部分在于数据的处理&#xff0c;话不多说直接上代码&#xff1a; 下面是tree.js import React, {Component} …

网站后台服务器内部错误开网站做商城怎么样

今日简单分享 container 组件的源码实现&#xff0c;从以下两个方面来讲解&#xff1a; 1、container 组件的页面结构 2、container 组件的属性 一、container 组件的页面结构 二、container 组件的属性 1、container 部分的 direction 属性&#xff0c;子元素的排列方向&am…

宠物网站页面设计ps怎么创建一个网页

【Ascend C】昇腾Ascend C算子开发入门课程&#xff0c;新手零基础入门 摘要&#xff1a;本课程是Ascend C算子开发的初级教程&#xff0c;通过课程讲解及样例实操&#xff0c;帮助你学习如何使用Ascend C开发矢量算子。 1、了解并行计算架构、并行计算方法等基本概念 2、理解…

论学院网站建设项目的进度管理天津百度搜索网站排名

我们在本地电脑使用小皮面板phpstudy安装phpMyAdmin4.8.5成功后&#xff0c;但是点击【管理】功能打开时却出现如下错误&#xff1a; Fatal error: Unparenthesized a ? b : c ? d : e is not supported. Use either (a ? b : c) ? d : e or a ? b : (c ? d : e) in D:\…

网站开发中界面做网站哪家公司好

Web 是一种分布式应用架构&#xff0c;旨在共享分布在网络上的各个Web服务器中的所有互相链接的信息。 Web 采用客户/服务器通信模式&#xff0c;客户与服务器之间用HTTP协议通信。 Web 使用超级文本技术&#xff08;HTML&#xff09;来链接网络上的信息。信息存放在服务器端&a…