当前位置: 首页 > news >正文

python学习第十七天(自用)

FastAPI

Web初识,fastapi开发服务器端内容

小结

FastAPI介绍

入门

创建根目录下返回内容

/users下返回内容

运行

根目录下返回值

/users下返回值

但这种启动方式并不推荐,推荐还是在代码里写好运行程序

0.0.0.0表示ip地址不做限制

同样的输出结果

小结

汉字谜盒案例

开发规范

因为传统风格的url中的资源路径每个人定义的都不同,命名方式不同,导致不规范,因此引出restful来规范api接口服务,根据http的不同请求方式来规定不同的操作,url来定位资源

小结

基础环境搭建

前端这里直接使用准备的页面了

由于这里是要返回页面,因此这里要使用这个方法来封装

运行并查看网页,发现与目标网页不符

前端页面这里访问css和js文件并没有访问到

解决,通过挂载静态文件来实现

再次运行,成功渲染

新建会话

可以看到这里前端调用接口是在/api/sessions这个目录下调用的,而get是查询,post是新建,delete是删除,put是修改,因此这里新建会话应该使用post请求

会话目录,没有则创建

该接口功能实现步骤,这里使用post请求,前端是去/api/sessions去找会话

生成会话标识,按以前的来就是把当前时间作为会话标识

组装消息,格式按照以前ai智能伴侣的格式来

保存为json文件

返回数据,按照格式返回数据

能执行到这儿说明就执行成功了,直接返回200即可

重新启动,成功请求,并且返回结果

但返回内容fastapi有统一的对象去返回结果

定义响应模型,对每个参数的类型做声明

因此这里返回数据就可以写成

重新运行查看返回值,和目标一样

AI对话功能分析

尝试聊天功能,抓包看到请求路径为/api/chat,请求方式为POST

其中请求体是json格式

分析请求数据与响应数据格式

因为请求是发送的json格式,在fastapi中如何接收json格式文件这里也有相应的方法

在方法中声明一个参数request,它会将json格式直接封装到这个request对象中,其中ChatRequest类,我们定义属性要与对应的请求的属性相同

请求模型

接收请求参数功能测试

看到成功返回消息,结果也正常输出

小结,通过request对象封装成json格式接收,其中定义的对象要继承Base Model类,并且定义的属性要与请求的属性格式相同

与AI交互功能实现步骤,每回问答都需要将上一回的内容调出来然后按照滚雪球的形式传递给大模型,最后返回结果并保存

准备系统提示词

功能框架

以前的与大模型问答的格式

获取会话数据

获取文件路径

通过获取路径函数去读取json文件内容

构建与大模型会话列表

调用AI大模型,公式化操作,使用非流式输出,因为输出内容少,无需流式输出

获取响应数据,可以一点点根据返回结构来获取内容,也可以直接看官方文档来直接获取

将大模型返回的内容加到消息列表中,并将session_data更新

保存到json文件中

最后ai返回的结果就可以给用户呈现了

运行测试结果,可以看到成功得到数据

文件也已经成功保存

优化,将系统提示词不保存,因为是前置条件,只要在发送给大模型时输入就行,不用保存提示词

在更新消息列表时把第一个元素删除就行了

http://www.zskr.cn/news/1489894.html

相关文章:

  • 微软为 Windows 10、11 及 Server 安装镜像发布 Defender 更新
  • 从虚拟机到私有云:手把手教你用CentOS 7和OpenStack搭建个人开发测试环境
  • Qt安装后第一件事:手把手教你配置环境变量和创建Hello World项目(Win10 + Qt 5.12)
  • 为什么国内大学普遍把c语言作为程序设计的入门课程?
  • C# WinForm连接SQLite踩坑实录:从‘文件被占用’到性能调优,我都帮你解决了
  • 免费图片去水印工具推荐:2026年收藏与学习向实用教程
  • 明明插了麦克风却没声音?这些坑你踩了几个?
  • 告别配置混乱!用Apollo Profiles统一管理Spring Boot多环境配置(附Idea/Eclipse实战)
  • 基于 Windows + Ubuntu 练习 MuJoCo 模拟
  • 基础采集设备
  • Vim党福音:用Coc.nvim + Clangd搞定嵌入式开发,解决交叉编译链头文件索引的终极脚本
  • 高效空气过滤器哪家好 2026年市场选择指南 - 品牌排行榜
  • 鸿蒙原生 ArkTS:margin 溢出、Row 弹性分配与 alignItems 的交互
  • 鸿蒙6.0应用开发——网络状态管理
  • LeetCode 2161.根据给定数字划分数组:双指针(O(1)但非源地操作)
  • 电商物流避坑指南:这8个快递查询痛点,你遇到过几个?
  • 告别截图!MapChart遗传图谱高清导出与个性化样式进阶教程
  • 市面上正规的雾森系统厂家哪家可靠
  • 大模型应用专家,做好随时涨薪的准备吧~
  • STM32F4 CANopen SDO通信调试实录:我是如何用逻辑分析仪抓包解决数据帧错误的
  • 2026乐山油炸串串推荐 脆皮五花肉人气店 - 优质品牌商家
  • 限流:从单机QPS计数器到分布式三层防御体系
  • AD9253 国产替代方向:四通道 14 位 125MSPS ADC 选型注意事项
  • 2026年成都名酒回收商家:核心技术维度深度解析 - 优质品牌商家
  • 过期食品被晒图投诉,舆情处置时发声明为什么被骂更惨
  • 别再傻傻用pip list了!Python包版本查询的5种高效姿势(含Pycharm/VSCode环境)
  • 安卓必备神器,收藏到吃灰都要下!
  • 别再只做本地开发了!手把手教你用IIS和花生壳内网版,把本地项目变成临时演示环境
  • 7不同岗位如何挑选 AI 证书?运营、产品、设计、市场选型全指南
  • 基于深度学习YOLOv10的森林火灾烟雾识别检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)