机票改签请求
示例代码:
@tool
def update_ticket_to_new_flight(ticket_no: str, new_flight_id: int) -> str:"""Update the user's ticket to a new valid flight.Args:ticket_no (str): The ticket number to be updated.new_flight_id (int): The ID of the new flight to which the ticket should be updated.Returns:str: A message indicating whether the ticket was successfully updated or if there were errorssuch as an invalid flight ID, the flight being too soon, or the user not owning the ticket."""config = ensure_config()configuration = config.get("configurable", {})passenger_id = configuration.get("passenger_id", None)if not passenger_id:raise ValueError("No passenger ID configured.")conn = sqlite3.connect(db)cursor = conn.cursor()cursor.execute("SELECT departure_airport, arrival_airport, scheduled_departure FROM flights WHERE flight_id = ?",(new_flight_id,),)new_flight = cursor.fetchone()if not new_flight:cursor.close()conn.close()return "Invalid new flight ID provided."column_names = [column[0] for column in cursor.description]new_flight_dict = dict(zip(column_names, new_flight))timezone = pytz.timezone("Etc/GMT-3")current_time = datetime.now(tz=timezone)departure_time = datetime.strptime(new_flight_dict["scheduled_departure"], "%Y-%m-%d %H:%M:%S.%f%z")time_until = (departure_time - current_time).total_seconds()if time_until < (3 * 3600):return f"Not permitted to reschedule to a flight that is less than 3 hours from the current time. Selected flight is at {departure_time}."cursor.execute("SELECT flight_id FROM ticket_flights WHERE ticket_no = ?", (ticket_no,))current_flight = cursor.fetchone()if not current_flight:cursor.close()conn.close()return "No existing ticket found for the given ticket number."# Check the signed-in user actually has this ticketcursor.execute("SELECT * FROM tickets WHERE ticket_no = ? AND passenger_id = ?",(ticket_no, passenger_id),)current_ticket = cursor.fetchone()if not current_ticket:cursor.close()conn.close()return f"Current signed-in passenger with ID {passenger_id} not the owner of ticket {ticket_no}"# In a real application, you'd likely add additional checks here to enforce business logic,# like "does the new departure airport match the current ticket", etc.# While it's best to try to be *proactive* in 'type-hinting' policies to the LLM# it's inevitably going to get things wrong, so you **also** need to ensure your# API enforces valid behaviorcursor.execute("UPDATE ticket_flights SET flight_id = ? WHERE ticket_no = ?",(new_flight_id, ticket_no),)conn.commit()cursor.close()conn.close()return "Ticket successfully updated to new flight."
下面详细解释这段代码。
1. 函数定义与文档说明
def update_ticket_to_new_flight(ticket_no: str, new_flight_id: int) -> str:"""Update the user's ticket to a new valid flight.Args:ticket_no (str): The ticket number to be updated.new_flight_id (int): The ID of the new flight to which the ticket should be updated.Returns:str: A message indicating whether the ticket was successfully updated or if there were errorssuch as an invalid flight ID, the flight being too soon, or the user not owning the ticket."""
-
解释:
- 使用
def
定义一个函数,函数名为update_ticket_to_new_flight
,接收两个参数:ticket_no
:票号,类型为字符串(str)new_flight_id
:新航班的ID,类型为整数(int)
- 函数最后会返回一个字符串(返回值类型用
-> str
指明)。 - 函数的文档字符串(docstring)详细说明了函数的作用、参数意义以及返回值,方便其他开发者理解和使用此函数。
- 使用
-
举例说明:
- 假如用户持有票号 “ABC123”,想把它改到航班ID 为 456 的新航班,那么调用时就会写:
message = update_ticket_to_new_flight("ABC123", 456)
- 返回的字符串可能是 “Ticket successfully updated to new flight.” 表示更新成功,或者是出错提示。
- 假如用户持有票号 “ABC123”,想把它改到航班ID 为 456 的新航班,那么调用时就会写:
2. 读取配置和获取乘客ID
config = ensure_config()configuration = config.get("configurable", {})passenger_id = configuration.get("passenger_id", None)if not passenger_id:raise ValueError("No passenger ID configured.")
-
解释:
- 调用一个名为
ensure_config()
的函数(假设它负责返回一个全局或当前环境的配置字典)。 - 从返回的配置中获取键
"configurable"
对应的子字典;如果没有则使用空字典{}
作为默认值。 - 从这个子字典中获取
"passenger_id"
(乘客ID),如果没有找到则返回None
。 - 如果
passenger_id
为假(例如None
、空字符串等),就抛出一个ValueError
异常,提示“没有配置乘客ID”。
- 调用一个名为
-
举例说明:
- 例如,确保配置返回:
那么{"configurable": {"passenger_id": "P12345", ...}, ...}
passenger_id
就是"P12345"
。如果没有设置乘客ID,程序就会报错,提示用户必须先配置乘客ID。
- 例如,确保配置返回:
3. 连接数据库并创建游标
conn = sqlite3.connect(db)cursor = conn.cursor()
-
解释:
- 使用
sqlite3.connect(db)
连接到 SQLite 数据库,其中变量db
应该是数据库文件的路径或名称。 - 调用
conn.cursor()
创建一个游标对象cursor
,用于执行 SQL 查询和命令。
- 使用
-
举例说明:
- 假设
db
是"tickets.db"
,那么这两行代码会建立到"tickets.db"
数据库的连接,并创建一个游标以便后续执行 SQL 操作。
- 假设
4. 查询新航班信息
cursor.execute("SELECT departure_airport, arrival_airport, scheduled_departure FROM flights WHERE flight_id = ?",(new_flight_id,),)new_flight = cursor.fetchone()if not new_flight:cursor.close()conn.close()return "Invalid new flight ID provided."
-
解释:
- 执行一条 SQL 查询,从
flights
表中选取该航班的出发机场、到达机场和计划起飞时间,条件是flight_id
等于传入的新航班ID。 - 参数
(new_flight_id,)
以元组形式传入,防止 SQL 注入。 - 使用
cursor.fetchone()
获取查询的第一行结果,存储在变量new_flight
中。 - 如果查询结果为空(即没有找到该航班),则:
- 关闭游标和数据库连接;
- 返回提示信息 “Invalid new flight ID provided.”
- 执行一条 SQL 查询,从
-
举例说明:
- 如果用户传入的新航班ID 在
flights
表中没有记录,那么查询结果new_flight
为None
,函数会关闭数据库连接,并返回错误提示。
- 如果用户传入的新航班ID 在
5. 将查询结果转换为字典格式
column_names = [column[0] for column in cursor.description]new_flight_dict = dict(zip(column_names, new_flight))
-
解释:
cursor.description
包含了查询结果中每一列的描述信息,通常第一个元素就是列名。这里使用列表推导式提取所有列名。- 使用
zip
将列名列表和查询结果new_flight
对应组合,转换成一个字典new_flight_dict
,便于通过键访问每一列的值。
-
举例说明:
- 假设查询结果
new_flight
为:("JFK", "LAX", "2025-03-15 15:30:00.000+0000")
, - 列名列表可能为:
["departure_airport", "arrival_airport", "scheduled_departure"]
, - 则
new_flight_dict
将是:{"departure_airport": "JFK","arrival_airport": "LAX","scheduled_departure": "2025-03-15 15:30:00.000+0000" }
- 假设查询结果
6. 获取当前时间与新航班的起飞时间,并检查时间差
timezone = pytz.timezone("Etc/GMT-3")current_time = datetime.now(tz=timezone)departure_time = datetime.strptime(new_flight_dict["scheduled_departure"], "%Y-%m-%d %H:%M:%S.%f%z")time_until = (departure_time - current_time).total_seconds()if time_until < (3 * 3600):return f"Not permitted to reschedule to a flight that is less than 3 hours from the current time. Selected flight is at {departure_time}."
-
解释:
- 使用
pytz.timezone("Etc/GMT-3")
指定一个时区(这里使用 GMT-3 时区,可以根据实际需求调整)。 datetime.now(tz=timezone)
获取当前时间,并带上该时区信息。- 使用
datetime.strptime()
将查询到的"scheduled_departure"
字符串按照指定格式转换为datetime
对象。格式字符串"%Y-%m-%d %H:%M:%S.%f%z"
表示“年-月-日 小时:分钟:秒.微秒+时区偏移”。 - 计算从当前时间到航班起飞时间的间隔(秒数)。
- 如果间隔小于 3 小时(3 * 3600 秒),返回错误信息,提示不允许改签到起飞时间不足 3 小时的航班,并显示该航班的起飞时间。
- 使用
-
举例说明:
- 如果当前时间是 2025-03-15 12:00,而新航班起飞时间为 2025-03-15 14:30,则间隔只有 2.5 小时,小于 3 小时,函数会返回提示:“Not permitted to reschedule… Selected flight is at 2025-03-15 14:30:00+…” 。
7. 查询当前票号对应的航班
cursor.execute("SELECT flight_id FROM ticket_flights WHERE ticket_no = ?", (ticket_no,))current_flight = cursor.fetchone()if not current_flight:cursor.close()conn.close()return "No existing ticket found for the given ticket number."
-
解释:
- 执行 SQL 查询,从
ticket_flights
表中查找该票号对应的航班ID。 - 使用传入的
ticket_no
参数进行查询。 - 调用
fetchone()
获取查询结果。 - 如果没有找到该票号的记录,则关闭游标与数据库连接,返回错误提示“找不到给定票号的现有机票”。
- 执行 SQL 查询,从
-
举例说明:
- 如果票号 “ABC123” 在
ticket_flights
表中没有对应记录,那么函数会返回提示错误信息。
- 如果票号 “ABC123” 在
8. 检查当前登录的乘客是否拥有该票
cursor.execute("SELECT * FROM tickets WHERE ticket_no = ? AND passenger_id = ?",(ticket_no, passenger_id),)current_ticket = cursor.fetchone()if not current_ticket:cursor.close()conn.close()return f"Current signed-in passenger with ID {passenger_id} not the owner of ticket {ticket_no}"
-
解释:
- 执行 SQL 查询,从
tickets
表中检查是否存在一条记录,满足票号与乘客ID都匹配。 - 这一步是为了确保当前登录的乘客实际上拥有这张机票。
- 如果查询结果为空,则说明该票不属于当前乘客,故关闭游标和连接,并返回提示信息。
- 执行 SQL 查询,从
-
举例说明:
- 如果当前乘客ID为 “P12345”,但票号 “ABC123” 属于其他乘客,则返回提示:“Current signed-in passenger with ID P12345 not the owner of ticket ABC123”。
9. 执行机票更新操作
cursor.execute("UPDATE ticket_flights SET flight_id = ? WHERE ticket_no = ?",(new_flight_id, ticket_no),)conn.commit()
-
解释:
- 执行 SQL 更新命令,将
ticket_flights
表中对应票号的flight_id
更新为新的航班ID。 - 传入的参数确保安全性。
- 使用
conn.commit()
提交事务,将改动写入数据库。
- 执行 SQL 更新命令,将
-
举例说明:
- 如果一切检查通过,这条命令就会将票号 “ABC123” 的航班ID从旧值改为新值(例如 456)。
10. 清理资源并返回成功信息
cursor.close()conn.close()return "Ticket successfully updated to new flight."
-
解释:
- 关闭游标和数据库连接,释放资源。
- 返回一条成功信息,告知票已成功更新到新航班。
-
举例说明:
- 当所有步骤均正常执行,最终函数返回字符串 “Ticket successfully updated to new flight.”,告知用户改签成功。
总结
整个函数流程可以理解为:
- 先检查配置,获取当前乘客ID;
- 连接数据库,查询新航班是否存在,检查航班时间是否合适(至少提前3小时);
- 查询该票号是否存在,并确认当前乘客确实拥有该票;
- 如果所有检查都通过,则执行更新操作,将机票改签到新航班;
- 最后清理数据库资源,并返回一条操作结果信息。
这样设计可以确保只有合法且符合条件的改签请求才会被执行,否则返回具体的错误提示,方便调用者根据返回信息做进一步处理。
相关文章:
机票改签请求
示例代码: tool def update_ticket_to_new_flight(ticket_no: str, new_flight_id: int) -> str:"""Update the users ticket to a new valid flight.Args:ticket_no (str): The ticket number to be updated.new_flight_id (int): The ID of th…...
linux下文件读写操作
Linux下,文件I/O是操作系统与文件系统之间进行数据传输的关键部分。文件I/O操作允许程序读取和写入文件,管理文件的打开、关闭、创建和删除等操作。 1. 文件描述符 在Linux中,每个打开的文件都由一个文件描述符来表示。文件描述符是一个非负…...
命名管道的创建和通信实现
目录 命名管道的创建 使用函数创建命名管道的通信 预备创建 makefile设计 server.hpp设计 clent.hpp设计 comm.hpp设计 server.cc设计 clent.cc设计 测试运行 今天我们来学习命名管道 由于匿名管道(pipe())无法在两个毫不相干的进程之间进行通…...
C++和OpenGL实现3D游戏编程【连载24】——父物体和子物体之间的坐标转换
欢迎来到zhooyu的C++和OpenGL游戏专栏,专栏连载的所有精彩内容目录详见下边链接: 🔥C++和OpenGL实现3D游戏编程【总览】 父子物体的坐标转换 1、本节要实现的内容 前面章节我们了解了父物体与子物体的结构,它不仅能够表示物体之间的层次关系,更重要的一个作用就是展示物…...
21.HarmonyOS Next CustomSlider组件步长控制教程(三)
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! 文章目录 1. 步长控制概述2. 步长基本概念2.1 什么是步长?2.2 步长的作用 3. 设置步长3.1 基本参数3.2 代码示例 4. 步长与范围的关系4…...
小白学习:rag向量数据库
学习视频: https://www.bilibili.com/video/BV11zf6YyEnT/?spm_id_from333.337.search-card.all.click 例子: 用户提出问题 客服机器人基于rag回答用户问题 过程拆解: 客户问题 – 转化为向量表示 – 在向量数据库中进行相似性搜索 – 系…...
STM32 CAN模块原理与应用详解
目录 概述 一、CAN模块核心原理 1. CAN协议基础 2. STM32 CAN控制器结构 3. 波特率配置 二、CAN模块配置步骤(基于HAL库) 1. 初始化CAN外设 2. 配置过滤器 3. 启动CAN通信 三、数据收发实现 1. 发送数据帧 2. 接收数据帧(中断方式…...
NO.29十六届蓝桥杯备战|string九道练习|reverse|翻转|回文(C++)
P5015 [NOIP 2018 普及组] 标题统计 - 洛谷 #include <bits/stdc.h> using namespace std;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);string s;getline(cin, s);int sz s.size();int cnt 0;for (int i 0; i < sz; i){if (isspace(s[i]))continue…...
最新版本TOMCAT+IntelliJ IDEA+MAVEN项目创建(JAVAWEB)
前期所需: 1.apache-tomcat-10.1.18-windows-x64(tomcat 10.1.8版本或者差不多新的版本都可以) 2.IntelliJ idea 24年版本 或更高版本 3.已经配置好MAVEN了(一定先配置MAVEN再搞TOMCAT会事半功倍很多) 如果有没配置…...
MAC-禁止百度网盘自动升级更新
通过终端禁用更新服务(推荐) 此方法直接移除百度网盘的自动更新组件,无需修改系统文件。 步骤: 1.关闭百度网盘后台进程 按下 Command + Space → 输入「活动监视器」→ 搜索 BaiduNetdisk 或 UpdateAgent → 结束相关进程。 2.删除自动更新配置文件 打开终端…...
Unity DOTS从入门到精通之EntityCommandBufferSystem
文章目录 前言安装 DOTS 包ECBECB可以执行的指令示例: 前言 DOTS(面向数据的技术堆栈)是一套由 Unity 提供支持的技术,用于提供高性能游戏开发解决方案,特别适合需要处理大量数据的游戏,例如大型开放世界游…...
【AIGC系列】6:HunyuanVideo视频生成模型部署和代码分析
AIGC系列博文: 【AIGC系列】1:自编码器(AutoEncoder, AE) 【AIGC系列】2:DALLE 2模型介绍(内含扩散模型介绍) 【AIGC系列】3:Stable Diffusion模型原理介绍 【AIGC系列】4࿱…...
【Linux】使用问题汇总
#1 ssh连接的时候报Key exchange failed 原因:服务端版本高,抛弃了一些不安全的交换密钥算法,且客户端版本比较旧,不支持安全性较高的密钥交换算法。 解决方案: 如果是内网应用,安全要求不这么高…...
nnUNet V2修改网络——全配置替换MultiResBlock模块
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 MultiRes Block 是 MultiResUNet 中核心组件之一,旨在解决传统 U-Net 在处理多尺度医学图像时的局…...
Git合并工具在开发中的使用指南
在团队协作开发中,Git 是最常用的版本控制工具,而代码合并(Merge)是多人协作不可避免的环节。当多个开发者同时修改同一文件的相同区域时,Git 无法自动完成合并,此时需要借助合并工具(Merge Too…...
AutoDL平台租借GPU,创建transformers环境,使用VSCode SSH登录
AutoDL平台租借GPU,创建transformers环境,使用VSCode SSH登录 一、AutoDl平台租用GPU 1.注册并登录AutoDl官网:https://www.autodl.com/home 2.选择算力市场,找到需要的GPU: 我这里选择3090显卡 3.这里我们就选择P…...
listen EACCES: permission denied 0.0.0.0:811
具体错误 npm run serve> bige-v0.0.0 serve > viteThe CJS build of Vites Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details. error when starting dev server: Error: listen EACCES: per…...
OpenAI API模型ChatGPT各模型功能对比,o1、o1Pro、GPT-4o、GPT-4.5调用次数限制附ChatGPT订阅教程
本文包含OpenAI API模型对比页面以及ChatGPT各模型功能对比表 - 截至2025最新整理数据:包含模型分类及描述;调用次数限制; 包含模型的类型有: Chat 模型(如 GPT-4o、GPT-4.5、GPT-4)专注于对话,…...
六十天前端强化训练之第十五天React组件基础案例:创建函数式组件展示用户信息(第15-21天:前端框架(React))
欢迎来到编程星辰海的博客讲解 我们已经学了14天了,再坚持坚持,马上我们就可以变得更优秀了,加油,我相信大家,接下来的几天,我会给大家更新前端框架(React),看完可以给一…...
北大一二三四版全套DeepSeek教学资料
DeepSeek学习资料合集:https://pan.quark.cn/s/bb6ebf0e9b4d DeepSeek实操变现指南:https://pan.quark.cn/s/76328991eaa2 你是否渴望深入探索人工智能的前沿领域?是否在寻找一份能引领你从理论到实践,全面掌握AI核心技术的学习…...
计算机网络:计算机网络的组成和功能
计算机网络的组成: 计算机网络的工作方式: 计算机网络的逻辑功能; 总结: 计算机网络的功能: 1.数据通信 2.资源共享 3.分布式处理:计算机网络的分布式处理是指将计算任务分散到网络中的多个节点(计算机或设备&…...
管理网络安全
防火墙在 Linux 系统安全中有哪些重要的作用? 防火墙作为网络安全的第一道防线,能够根据预设的规则,对进出系统的网络流量进行严格筛选。它可以阻止未经授权的外部访问,只允许符合规则的流量进入系统,从而保护系统免受…...
音频进阶学习十九——逆系统(简单进行回声消除)
文章目录 前言一、可逆系统1.定义2.解卷积3.逆系统恢复原始信号过程4.逆系统与原系统的零极点关系 二、使用逆系统去除回声获取原信号的频谱原系统和逆系统幅频响应和相频响应使用逆系统恢复原始信号整体代码如下 总结 前言 在上一篇音频进阶学习十八——幅频响应相同系统、全…...
Redis7系列:设置开机自启
前面的文章讲了Redis和Redis Stack的安装,随着服务器的重启,导致Redis 客户端无法连接。原来的是Redis没有配置开机自启。此文记录一下如何配置开机自启。 1、修改配置文件 前面的Redis和Redis Stack的安装的文章中已经讲了redis.config的配置…...
word甲烷一键下标
Sub 甲烷下标()甲烷下标 宏Selection.Find.ClearFormattingSelection.Find.Replacement.ClearFormattingWith Selection.Find.Text "CH4".Replacement.Text "CHguoshao4".Forward True.Wrap wdFindContinue.Format False.MatchCase False.MatchWhole…...
SSH 连接中主机密钥验证失败问题的解决方法
问题描述 在尝试通过 SSH 建立连接时,出现以下错误信息: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack…...
网络安全工具nc(NetCat)
NetCat是一个非常简单的Unix工具,可以读、写TCP或UDP网络连接(network connection)。它被设计成一个可靠的后端(back-end)工具,能被其它的程序程序或脚本直接地或容易地驱动。同时,它又是一个功能丰富的 网络调试和开发工具,因为它…...
探索在生成扩散模型中基于RAG增强生成的实现与未来
概述 像 Stable Diffusion、Flux 这样的生成扩散模型,以及 Hunyuan 等视频模型,都依赖于在单一、资源密集型的训练过程中通过固定数据集获取的知识。任何在训练之后引入的概念——被称为 知识截止——除非通过 微调 或外部适应技术(如 低秩适…...
【Linux】37.网络版本计算器
文章目录 1. Log.hpp-日志记录器2. Daemon.hpp-守护进程工具3. Protocol.hpp-通信协议解析器4. ServerCal.hpp-计算器服务处理器5. Socket.hpp-Socket通信封装类6. TcpServer.hpp-TCP服务器框架7. ClientCal.cc-计算器客户端8. ServerCal.cc-计算器服务器9. 代码时序1. 服务器启…...
3.6c语言
#define _CRT_SECURE_NO_WARNINGS #include <math.h> #include <stdio.h> int main() {int sum 0,i,j;for (j 1; j < 1000; j){sum 0;for (i 1; i < j; i){if (j % i 0){sum i;} }if (sum j){printf("%d是完数\n", j);}}return 0; }#de…...
【 IEEE出版 | 快速稳定EI检索 | 往届已EI检索】2025年储能及能源转换国际学术会议(ESEC 2025)
重要信息 主会官网:www.net-lc.net 【论文【】投稿】 会议时间:2025年5月9-11日 会议地点:中国-杭州 截稿时间:见官网 提交检索:IEEE Xplore, EI Compendex, Scopus 主会NET-LC 2025已进入IEEE 会议官方列表!&am…...
JVM常用概念之本地内存跟踪
问题 Java应用启动或者运行过程中报“内存不足!”,我们该怎么办? 基础知识 对于一个在本地机器运行的JVM应用而言,需要足够的内存来存储机器代码、堆元数据、类元数据、内存分析等数据结构,来保证JVM应用的成功启动以及未来平…...
JVM 的主要组成部分及其作用?
创作内容丰富的干货文章很费心力,感谢点过此文章的读者,点一个关注鼓励一下作者,激励他分享更多的精彩好文,谢谢大家! JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执…...
从能耗监测到碳资产管理:智慧校园能源管理平台的迭代升级与实践启示
一、核心价值提炼 随着我国能源结构转型的持续优化和“双碳”目标的明确,构建现代化能源体系已成为国家发展的重要战略。在这一背景下,校园作为能源消耗的重要领域,其能源管理的智能化、绿色化转型显得尤为重要。本文将深入探讨校园智慧能源…...
数据库核心-redo、undo
一、redo日志 InnoDB操作以页为单位操作数据。并且首先操作内存中缓冲池的数据,然后刷新到disk中,但如果事务提交后宕机、未能刷新到disk中,就会造成不一致情况。 重做日志: 系统重启时按照修改步骤重新更新数据页 redo日志占用…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_core_module
定义在 src\core\nginx.c ngx_module_t ngx_core_module {NGX_MODULE_V1,&ngx_core_module_ctx, /* module context */ngx_core_commands, /* module directives */NGX_CORE_MODULE, /* module type */NULL…...
SQLAlchemy系列教程:如何执行原生SQL
Python中的数据库交互提供了高级API。但是,有时您可能需要执行原始SQL以提高效率或利用数据库特定的特性。本指南介绍在SQLAlchemy框架内执行原始SQL。 在SQLAlchemy中执行原生SQL SQLAlchemy虽然以其对象-关系映射(ORM)功能而闻名ÿ…...
怎么实现: 大语言模型微调案例
怎么实现: 大语言模型微调案例 目录 怎么实现: 大语言模型微调案例输入一个反常识的问题:首都在北京天安门之后对输出模型进行测试:首都在北京天安门微调代码:测试微调模型代码:微调输出模型结构输出模型参数大小对比Qwen 2.5_0.5:53MB输出模型:951MB 是一样的,没有进行…...
【Linux内核系列】:深入理解缓冲区
🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz ★★★ 本文前置知识: 文件系统以及相关系统调用接口 输入以及输出重定向 那么在此前的学习中,我们了解了文件的概念以及相关的系统调用接口,并…...
【Qt】成员函数指针
一、成员函数指针的本质 与普通函数指针的区别: // 普通函数指针 void (*funcPtr)() &普通函数;// 成员函数指针 void (MyClass::*memberFuncPtr)() &MyClass::成员函数;• 绑定对象:成员函数指针必须与类的实例对象结合使用 • 隐含 this 指…...
关于 Can Utils 的详细介绍、使用方法及配置指南
Can Utils:开源CAN总线工具集合 一、Can Utils简介 Can Utils 是一组开源的CAN总线工具链,专为嵌入式开发者和网络诊断工程师设计,支持Linux、Windows和macOS系统。它包含一系列轻量级命令行工具(如 cantoolz、candump、canbus …...
【Academy】OAuth 2.0 身份验证漏洞 ------ OAuth 2.0 authentication vulnerabilities
OAuth 2.0 身份验证漏洞 ------ OAuth 2.0 authentication vulnerabilities 1. 什么是 OAuth?2. OAuth 2.0 是如何工作的?3. OAuth 授权类型3.1 OAuth 范围3.2 授权代码授权类型3.3 隐式授权类型 4. OAuth 身份验证4.1 识别 OAuth 身份验证4.2 侦察OAuth…...
dify中使用NL2SQL
在 Dify 工作流中融入 NL2SQL(自然语言转 SQL)之能力,可依循如下步骤达成,借由 Dify 的模块化设计以及模型编排之功能,优化数据库查询之智能化交互: 一、环境准备与 Dify 部署 安装 Docker 与 Dify 务须确…...
android viewmodel如何使用
嗯,我现在要学习如何在Android中使用ViewModel。我之前听说过ViewModel是用来管理UI相关数据的,这样在配置变化比如屏幕旋转时数据不会丢失。但具体怎么用呢?我需要先回忆一下相关的知识。 首先,ViewModel应该是Android Architec…...
蓝桥杯备赛-基础训练(四)字符串 day17
好久不见,今天开始继续更新,或许拿不了奖,但是希望记录自己学习的过程,如果感觉有收获的同学在下面多多评论说说我代码的缺陷,感谢大家! 1、反转字符串 编写一个函数,其作用是将输入的字符串反…...
AI Agent开发框架分析:前端视角
1. Mastra (https://mastra.ai/docs) 优点: 提供直观的界面构建器,适合无代码/低代码开发支持JavaScript/TypeScript,可直接集成到前端项目可视化工作流设计,降低入门门槛内置多种UI组件,加速前端开发 缺点…...
第3节:IP地址分类与子网划分实战指南
IP地址分类与子网划分实战指南:从小白到入门 在网络通信中,IP地址是设备之间相互识别和通信的基础。无论是家庭网络还是企业网络,IP地址的分配和管理都是网络运维的核心任务之一。然而,对于初学者来说,IP地址的分类、子网掩码、CIDR(无类别域间路由)和VLSM(可变长子网…...
贪心算法三
> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是贪心算法,并且掌握贪心算法。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! >…...
pytest基础知识
pytest知识了解 pytest的基础知识了解:Python测试框架之pytest详解_lovedingd的博客-CSDN博客_pytest框架 (包含设置断点,pdb,获取最慢的10个用例的执行耗时) pytest-pytest.main()运行测试用例,pytest参数: pytest-…...
JavaWeb后端基础(7)AOP
AOP是Spring框架的核心之一,那什么是AOP?AOP:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。AOP是一种思想,而在Spring框…...