07|大模型API封装:自建大模型如何对外服务?
独行
你好,我是独行。
上一节课我们详细讲解了基于 ChatGLM3-6B + LangChain + 向量数据库的企业内部知识系统,在这个演示项目中,其实已经用到了 API 的封装,我们从 WebUI 界面提问,通过接口将数据传到后端服务,从而获得响应。大模型是没有 Web API 的,所以需要我们进行一次封装,将大模型的核心接口封装成 Web API 来为用户提供服务,这是企业自建大模型的必经之路。
在这里我们需要引入一个类似于 SpringBoot 的框架,用来做接口服务化,在 Python 技术体系里,有一个框架叫 FastAPI,可以很方便地实现接口注册,所以我们这节课会基于 FastAPI 对大模型的接口进行封装。实际上光写一个 Demo 不算难,但是如果要完整地用于工程化项目,还是有不少事情要注意,所以这节课我会把各种各样和 API 相关的细节梳理出来,学完这节课的内容,再结合前面学习的大模型部署,你本地搭建的大模型基本可以对外提供服务了。
接口封装
提供 Web API 服务需要两个技术组件:Uvicorn 和 FastAPI。
Uvicorn 作为 Web 服务器,类似 Tomcat,但是比 Tomcat 轻很多。允许异步处理 HTTP 请求,所以非常适合处理并发请求。基于 uvloop 和 httptools,所以具备非常高的性能,适合高并发请求的现代 Web 应用。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
1. 企业自建大模型需要进行API封装,将大模型的核心接口封装成Web API来为用户提供服务。 2. 使用类似于SpringBoot的框架FastAPI进行接口服务化,结合Uvicorn作为Web服务器,可以构建高性能、易于扩展的异步Web应用程序或API。 3. 在Python中使用Pydantic模型来定义数据结构,实现数据验证和管理,类似于Java中的Validation。 4. 对于工程化项目,建议进行代码分层,包括controller、service、model、tool等,以便管理代码。 5. FastAPI的include_router方法可以将不同的路由集成到主应用中,有助于组织和分离代码。 6. 大模型接口封装示例代码基于ChatGLM3-6B,通过对model.chat()的封装实现基本的对话接口。 7. 使用ModelManager类进行大模型的懒加载,确保模型和tokenizer的单例模式。 8. 大模型产品的输出模式包括一次性输出和流式输出,需要根据实际需求进行相应的封装和处理. 9. 大模型API从封装到调用就基本完成了,可以把整个链路都串起来跑一跑,体验下效果。 10. 在实际工程化的过程中,还会遇到其他问题,比如API的鉴权、跨域问题、API限流问题,需要在后续的课程中讲解。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《AI 大模型实战高手课》,新⼈⾸单¥59
《AI 大模型实战高手课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- Lee老师 我等不及了 上瘾了 催更催更
作者回复: 马上啦
2024-06-17归属地:福建 - 红烧肉老师,您好。在api接口封装好的基础上。比如对api接口实现认证鉴权、限流、监控。目前有什么方案嘛
作者回复: 这个就和我们一般的API管理没区别了,比如可以搭建一个API网关,可以看下公司整体的方案。可以买商用的也可以用开源的,也可以自己写
2024-06-17归属地:北京
收起评论