- 博客(43)
- 收藏
- 关注
原创 SpringBoot 事件监听机制
Spring Boot 的事件监听机制基于观察者模式,允许应用程序在不同组件之间进行松耦合的通信。当某个事件发生时,所有注册的监听器都会收到通知并执行相应的处理逻辑。/*** 创建订单事件*/@Getter/*** 订单ID*//*** 订单创建用户*/
2025-11-22 22:01:57
233
原创 SpringAI-Alibaba 快速开始
官网: https://java2ai.com/阿里百炼:https://bailian.console.aliyun.com/#/home修改pom.xml创建HelloWorld项目添加依赖 SAA-01HelloWorld/pom.xmlapplication.propertiesHelloController.java
2025-10-02 20:36:27
330
原创 LlamaIndex 检索器 Retriever
检索器负责在给定用户查询(或聊天消息)的情况下获取最相关的上下文。它可以建立在索引之上,也可以独立定义。它作为查询引擎(和聊天引擎)中用于检索相关上下文的关键构建模块。
2025-07-13 21:43:14
616
原创 LlamaIndex Querying 自定义查询
LlamaIndex 提供了一套底层组合式API,可实现对查询流程的精细化控制。在这个示例中,我们自定义了检索器,使用不同的 top_k 数值,并添加了一个后处理步骤,要求检索到的节点必须达到最低相似度分数才能被包含在内。这样可以在有相关结果时为您提供大量数据,但如果没有任何相关内容,也可能导致没有数据返回。documents = SimpleDirectoryReader(input_dir="../data/本草纲目").load_data()# 配置检索器# 配置响应合成器# 组装查询引擎。
2025-07-13 20:34:36
726
原创 AutoGen MCP 简单使用
日志相关配置# 初始化FastMCP服务器,并指定服务的名称为:calculatorname="calculator_mcp_server", # 服务名instructions="计算器", # 服务描述# 定义加法工具函数"""加法运算:param x: 第一个数字:param y: 第二个数字:return:"""logger.info(f"加法运算 :{x} + {y} = {res}")# 定义减法工具函数"""减法运算:param x: 第一个数字。
2025-07-03 16:14:56
571
原创 Python SQLModel 简单使用
SQLModel 是 Python 中用于 SQL 数据库的操作工具,旨在实现简洁性、兼容性和健壮性。SQLModel 是基于 SQLAlchemy 和 Pydantic 构建的。它由 FastAPI 的同一作者制作,旨在完美匹配需要使用 SQL 数据库的 FastAPI 应用程序。SQLModel 基于 Python 的类型注解,并由 Pydantic 和 SQLAlchemy 提供支持。其主要特性包括:易于编写:代码直观,编辑器支持良好,自动补全无处不在,减少调试时间。
2025-06-22 20:35:39
856
原创 LlamaIndex 工作流 并发执行
除了循环和分支之外,工作流还可以并发地执行步骤。当你有多个可以相互独立运行的步骤,并且这些步骤中包含需要等待的耗时操作时,这种并发执行的方式就非常有用,因为它允许其他步骤并行运行。
2025-06-13 21:31:45
551
原创 LlamaIndex 工作流 上下文状态和流式传输事件
到目前为止,在我们的示例中,我们一直通过自定义事件的属性在各个步骤之间传递数据。这是一种强大的数据传递方式,但它也存在一些局限性。例如,如果你想在那些并非直接相连的步骤之间传递数据,你就需要通过中间的所有步骤来传递这些数据。这会使你的代码变得更难阅读和维护。为避免这一问题,我们在工作流中的每个步骤都可以使用一个 Context(上下文) 对象。要使用它,只需在你的步骤函数中声明一个类型为 Context 的参数即可。
2025-06-12 20:31:20
769
原创 LlamaIndex 工作流简介以及基础工作流
多个步骤可以通过定义自定义事件来实现,这些事件可以由某个步骤发出,并触发其他步骤。下面我们来定义一个简单的三步工作流。StopEvent,Workflow,step,Event,现在我们定义两个自定义事件:FirstEvent 和 SecondEvent。现在我们来定义工作流本身。我们通过为每个步骤指定输入类型和输出类型来实现这一点。step_one 接收一个 StartEvent,并返回一个 FirstEvent。
2025-06-06 22:30:19
830
原创 PythonWeb项目开发脚手架
2、SQLAlchemy ORM框架 (MySQL)1、FastAPI python web开发框架。4、JWT + Passlib(hash加密)3、Dynaconf 配置管理。
2025-06-02 17:09:54
426
原创 FastAPI docs接口文档的认证
在fastapi中,官方提供了OAuth2PasswordBearer依赖。可以在接口文档中出现认证的图标。编写oauth2.py文件自定义OAuth2认证,继承FastAPI框架的OAuth2PasswordBearer,实现自身业务的认证机制。"""对于doc文档中需要登录后才能访问的API接口,需要添加OAuth2PasswordBearer依赖项自定义此类,并继承OAuth2PasswordBearer,重写父类的call方法,实现自身业务的token验证""""""
2025-05-30 11:57:32
408
原创 FastAPI 项目配置管理
Dynaconf 是一个强大的 Python 配置管理库,它支持多种文件格式(如 JSON、YAML、TOML 和 .env 文件)和环境变量来管理应用程序的配置。使用 Dynaconf,您可以轻松地在不同环境(例如开发、测试和生产)之间切换配置。安装SDK。
2025-05-30 11:51:44
643
原创 FastAPI JWT和hash加密
JWT 即JSON 网络令牌(JSON Web Tokens)。JWT 是一种将 JSON 对象编码为没有空格,且难以理解的长字符串的标准。JWT 字符串没有加密,任何人都能用它恢复原始信息。但 JWT 使用了签名机制。接受令牌时,可以用签名校验令牌。使用 JWT 创建有效期为一周的令牌。第二天,用户持令牌再次访问时,仍为登录状态。令牌于一周后过期,届时,用户身份验证就会失败。只有再次登录,才能获得新的令牌。如果用户(或第三方)篡改令牌的过期时间,因为签名不匹配会导致身份验证失败。
2025-05-29 22:30:02
344
原创 FastAPI 依赖注入
依赖注入常用于以下场景:共享业务逻辑(复用相同的代码逻辑)共享数据库连接实现安全、验证、角色权限等……上述场景均可以使用依赖注入,将代码重复最小化。
2025-05-28 22:14:12
586
原创 FastAPI 异常处理
添加自定义处理器,要使用Starlette 的异常工具。假设要触发的自定义异常叫作 UnicornException。且需要 FastAPI 实现全局处理该异常。"""自定义异常类-用户不存在异常"""detail = "用户不存在""""自定义异常处理器 - 用户不存在:return:""""000","111"# 用户不存在创建项目目录结构commons包下的exceptions.py"""全局的请求参数校验异常:return:"""
2025-05-27 21:46:57
852
原创 AutoGen SelectorGroupChat 示例:社会热搜话题事件榜单
db包中的HotSearchTopic.py# 创建一个基类,用于定义数据模型的基本结构# 定义表名# 定义列:id,是整数类型,主键(primary_key=True),并使用 Sequence 生成唯一标识# 定义列:title,是字符串类型,最大长度为255# 定义列:hotnum,是整形db包中的init.py# 连接到 MySQL 数据库host = '127.0.0.1' # 例如:'localhost' 或 '127.0.0.1'port = '3306' # 通常是 3306。
2025-05-25 16:14:19
374
原创 LlamaIndex 第九篇 Indexing索引
摘要索引 Summary Index(原列表索引)的核心机制是将所有节点(Node)按顺序链式存储,形成一个线性结构。
2025-05-16 21:04:49
910
原创 LlamaIndex 第八篇 MilvusVectorStore
本指南演示了如何使用 LlamaIndex 和 Milvus 构建一个检索增强生成(RAG)系统。RAG 系统将检索系统与生成模型相结合,根据给定的提示生成新的文本。该系统首先使用 Milvus 等向量相似性搜索引擎从语料库中检索相关文档,然后使用生成模型根据检索到的文档生成新的文本。
2025-05-13 23:30:47
729
原创 LlamaIndex 第七篇 结构化数据提取
Pydantic 是一个广泛使用的数据验证和转换库。它 heavily 依赖于 Python 的类型声明。该项目的官方文档中有一份关于 Pydantic 的详尽指南,但在这里我们将仅介绍其基本内容。要创建一个 Pydantic 类,需要继承自 Pydantic 的BaseModelid: int在这个示例中,你创建了一个Userid和name。你将id定义为整数,name定义为字符串,默认值为Jane Doe。count: intfoo: Foo现在,Spam拥有一个foo和一个bars。Foo。
2025-05-11 22:03:08
1131
1
原创 LlamaIndex 第六篇 SimpleDirectoryReader
是将本地文件数据加载到 LlamaIndex 的最简单方式。虽然在实际生产场景中,您更可能需要使用 LlamaHub 提供的多种数据读取器(Reader),但 SimpleDirectoryReader 无疑是快速入门的理想选择。默认情况下,会尝试读取所有文件,并将其视为纯文本处理。除普通文本外,它还明确支持以下文件类型(通过文件扩展名自动识别):您可能会注意到这里缺少 JSON 文件类型——针对 JSON 格式,我们推荐使用专用的 JSON Loader工具。
2025-05-09 19:15:37
584
原创 LlamaIndex 第五篇 使用在线的LLM和Embeddings
在 LlamaIndex 中,你可以通过继承或使用创建自定义的 Embedding 类。# model_name: Optional[str] = None # 可选模型名# api_key: Optional[str] = None # 支持传入 api_key# dimension: Optional[int] = None # 默认 v1 是 768,v2 是 1536embeddings = embed_model.get_text_embedding("测试。。")
2025-05-06 16:55:50
626
原创 ADK 第四篇 Runner 执行器
智能体执行器 Runner,负责完成一次用户需求的响应,是ADK中真正让Agent运行起来的引擎,其核心功能和Agents SDK中的Runner类似,具体作用如下:会话管理:自动读取/写入 SessionService,维护历史信息。Agent调用:调用指定的Agent完成推理和工具调用输入输出流转:把用户输入交给Agent,把Agent输出返回。流程控制:支持多轮对话、子Agent委托、工具调用等。生命周期管理:处理每次对话流程的完整生命周期。
2025-05-05 16:13:33
1350
原创 ADK 第三篇 Agents (LlmAgent)
(Custom Agents):通过直接扩展BaseAgent实现,可开发具有独特业务逻辑、定制化控制流或特殊集成的智能体,满足高度定制化需求。
2025-05-03 14:40:34
1619
原创 ADK 第二篇 ADK内置的Web UI
ADK内置前端开启流程,这里我们需要创建一个项目文件,如创建一个ADK_Chat文件夹,然后创建基本文件结构:(注意:如果是Windows操作系统,官方推荐手动创建项目文件基本结构,避免出现字符乱码情况)在使用adk命令时,我们无需单独设置主函数,只要按照要求创建一个名为root_agent的主agent即可顺利的开启对话。test_agent --> agent.py 文件内容。test_agent --> init.py 文件内容。test_agent --> .env 文件内容。
2025-05-01 20:45:41
805
1
原创 LlamaIndex 第四篇 Documents 和 Nodes
文档可以通过数据加载器自动创建,也可以手动构建。默认情况下,我们所有的数据加载器(包括 LlamaHub 提供的加载器)都会通过 load_data 函数返回 Document 对象。您也可以选择手动构建文档。LlamaIndex 提供了 Document 数据结构。文档添加元数据1、在文档构造函数中添加2、在文档创建完成后添加通过 SimpleDirectoryReader 的 file_metadata 钩子可自动设置文件名。# 系统会根据 filename_fn 函数自动为每个文档设置元数据。
2025-04-30 20:02:10
1188
原创 ADK 第一篇 Google Agent Development Kit 简介
是一个灵活且模块化的框架,专为开发和部署AI智能体而设计。虽然ADK针对Gemini和Google生态系统进行了优化,但它与模型无关、与部署环境无关,并兼容其他框架。ADK的核心理念是让智能体开发更接近传统软件开发模式,从而帮助开发者更轻松地构建、部署和编排智能体架构——无论是处理简单任务,还是管理复杂工作流。:利用预置工具、自定义函数、OpenAPI规范或集成现有工具,赋予智能体多样化能力,实现与谷歌生态系统的深度整合。
2025-04-30 14:52:24
2401
1
原创 LlamaIndex第三篇 数据加载和转换
在让选定的LLM处理您的数据之前,首先需要对数据进行预处理和加载。这一过程类似于机器学习领域中的数据清洗/特征工程流程,或是传统数据环境中的ETL(提取-转换-加载)管道。这条数据摄取管道通常包含三个核心阶段:数据加载 - 从原始数据源提取信息数据转换 - 清洗/重组为结构化格式数据索引与存储 - 建立高效检索体系在您选定的LLM能够处理数据之前,首先需要完成数据加载。LlamaIndex通过(也称为Reader)实现这一过程。数据连接器会从不同数据源摄取信息,并将其格式化为。
2025-04-27 20:01:15
834
原创 LlamaIndex第二篇 使用LLMs和Embeddings向量模型
🤩批处理大小默认情况下,系统会以10个为一批的批次大小向OpenAI发送嵌入请求。对于部分用户,这可能(少数情况下)会触发速率限制;而对于需要嵌入大量文档的用户,这一批次大小可能过小。
2025-04-27 19:52:04
1202
原创 AutoGen Swarm 智能团
采用了一种多智能体协作模式:根据各智能体的能力动态分配任务。该设计模式最初由OpenAI在Swarm项目中提出,其核心理念是,且所有智能体共享同一消息上下文。这使得智能体能自主进行任务规划决策,而非依赖类似SelectorGroupChat的中心化协调器。
2025-04-24 22:19:01
967
原创 LlamaIndex第一篇 欢迎来到 LlamaIndex
智能代理(Agents)是由大语言模型(LLM)驱动的知识助手,能够调用各类工具执行研究、数据提取等多样化任务。其能力跨度广泛,既支持基础的问答交互,也能实现环境感知、自主决策与行动执行,从而完成复杂任务闭环。LlamaIndex 提供了一个构建智能代理的框架,支持将RAG(检索增强生成)管道等多种工具整合使用,以完成各类任务。工作流是通过整合多个智能代理、数据连接器及其他工具来完成任务的多步骤流程系统。
2025-04-24 15:58:42
768
原创 AutoGen SelectorGroupChat 选择器群聊
实现了一个团队,参与者轮流向所有其他成员广播消息。一个生成模型(例如,LLM)基于共享的上下文选择下一个发言者,从而实现动态的、上下感知的协作。主要特点包括:基于模型的话者选择可配置的参与者角色和描述防止同一发言者连续发言(可选)可定制的选择提示可自定义的选择功能,以覆盖默认的基于模型的选择。
2025-04-23 20:55:06
946
原创 AutoGen 使用终止条件
团队运行可能会无限期进行,而在许多情况下,我们需要知道何时停止它们。这就是终止条件的作用。AgentChat 支持多种终止条件,通过提供基础的 TerminationCondition 类以及继承自它的多种实现来实现。终止条件是一个可调用的函数,它接受自上次调用该条件以来的一系列AgentEvent或ChatMessage对象,并返回一个StopMessage如果对话应该终止,否则返回None。一旦达到终止条件,必须通过调用reset()来重置它,然后才能再次使用。
2025-04-21 17:30:11
404
原创 AutoGen Human-in-the-loop 人类反馈
本节将重点介绍如何从你的应用程序中与团队进行交互,并为其提供人的反馈。有两种主要方式可以从您的应用程序与团队进行交互:在团队运行期间——执行或时,通过提供反馈。一旦运行终止,通过输入为下一次调用或提供反馈。
2025-04-21 16:08:21
634
原创 使用AutoGen创建Agent智能体
Agent智能体需要访问LLM模型服务,如OpenAI、Azure OpenAI或本地模型,AutoGen 提供了一套内置的模型客户端,用于使用 ChatCompletion API。所有模型客户端都实现了 ChatCompletionClient 协议类。
2025-04-17 22:43:28
1120
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅