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

AI智能体(Agent)大模型入门【11】--基于llamaindex框架和fastapi框架完善页面和大语言模型对话的一些扩展接口

目录

前言

封装数据库连接函数

历史会话列表函数

多轮会话加载函数

运行演示

后言


前言

在之前的代码已经完善了对话接口,但是实际业务上需要我们能够对历史对话进行管理操作的,例如kimi,deepseek等一些市面常见的ai聊天页面,你都可以看到历史对话,或者对对话进行操作的,这里就涉及到了对数据库的增删改查操作,那么本篇章就是对对话管理进行接口操作。

封装数据库连接函数

关于这个,我们不需要每次启动fastapi在全局变量设置,这样很麻烦,我创建一个新的py文件来存储这个链接,即当使用的时候直接调用使用即可

import pymysqldef get_conn():return pymysql.connect(host="127.0.0.1", port=3306, user="用户名", password="数据库密码",database="数据库名称", charset="utf8mb4",cursorclass=pymysql.cursors.DictCursor)

修改这些中文设置即可,依据自己的数据库设置来修改,若端口号等其他有变,根据个人情况进行修改代码

历史会话列表函数

参考kimi

它是存在一个历史会话的,所以我们也需要创建一个历史会话列表函数,用来加载历史会话,

至于为什么要这样子操作,因为一个历史会话包含多轮会话,我们是要通过历史会话列表的来关联多轮历史会话,而不是直接加载多轮历史会话,因为会出现乱序以及数据量爆炸导致混沌的情况。

代码参考

@app.get("/chat_list_get")
async def chat_list_get():"""会话历史列表(也就是一整轮的开始标题):return:"""with closing(get_conn()) as conn:with conn.cursor() as cur:cur.execute("SELECT * FROM ChatList ORDER BY updated_at DESC")items = cur.fetchall()return [{"id": item["id"],"title": item["title"],"created_at": item["created_at"],"updated_at": item["updated_at"]}for item in items]

通过查询历史会话列表加载列表项,然后再通过跟新时间来进行排序。

多轮会话加载函数

其次,只拥有历史会话列表函数是不足以加载多轮历史会话的,所以还需要一个多轮会话加载函数来加载多轮会话

示例代码

@app.get("/chat_history")
async def chat_history(session_id: int):with closing(get_conn()) as conn:with conn.cursor() as cur:cur.execute("SELECT * FROM ChatHistory WHERE chat_list_id=%s ORDER BY msg_seq", (session_id,))items = cur.fetchall()return [{"id": item["id"],"chat_list_id": item["chat_list_id"],"msg_seq": item["msg_seq"],"role": item["role"],"message": item["message"],"created_at": item["created_at"],}for item in items]

通过加载历史会话列表关联外键查询多轮会话表,然后通过插入排序,进行顺序输出,减少混乱以及历史会话没有关联性,加强紧密性。

运行演示

历史会话列表加载

单个列表内的多轮会话加载

后言

关于删除接口我就不写了,希望你们能自己动手编写,本质上是对数据的增删改查的操作。到这里你基本上学习完了这个扩展内容,接下来的篇章还是基于完善对聊天接口的升级,直至完成实现基本功能,甚至多模态应用。

http://www.dtcms.com/a/457380.html

相关文章:

  • Linux进程第六讲——深入理解fork系统调用(下)
  • 织梦网站模板免费网站ico制作
  • 邹城网站建设多少钱做的比较好看的网站
  • Python 运算符与列表(list)
  • 鸿蒙NEXT Basic Services Kit:打造更稳固的应用基石
  • 使用 OpenAPI 构建 API 文档
  • 【C语言基础】03. 函数详解:从概念到高级应用
  • 精通C语言(2.结构体)(内含彩虹)
  • 如何做交互式网站百度发布信息的免费平台
  • 爬虫学习笔记
  • javaweb配置(自用)
  • VS Code行为数据的A/B测试方法论
  • JavaScript进阶篇:DOM核心知识解读
  • 网站吸流量wordpress isux主题
  • C++学习记录(16)红黑树
  • 前后端Long类型ID精度丢失问题
  • 微信小程序,组件中使用全局样式
  • 做网站必须要认证吗poi player wordpress
  • pytest+requests+allure生成接口自动化测试报告
  • leetcode 2300 咒语和药水的成功对数
  • 湖南城乡建设部网站首页长沙网红店
  • 从 0 到 1 搭建实时数据看板:RabbitMQ+WebSocket 实战指南
  • Linux(含嵌入式设备如泰山派)VNC 完整配置指南:含开机自启动(适配 Ubuntu/Debian 系)
  • 网站营销活动泰安市高新区建设局网站
  • 玳瑁的嵌入式日记 --------API总结
  • [xboard] 26 kernel启动流程之initrd、initramfs、ramdisk核心异同
  • 鸿蒙实现滴滴出行项目之侧边抽屉栏以及权限以及搜索定位功能
  • 从OpenAI发布会看AI未来:中国就业市场的重构与突围
  • 乔拓云网站建设wps怎么做网站
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 立即执行模式(Eager Execution)