Autogen_core: Message and Communication
目录
- 完整代码
- 代码解释
- 1. 消息的数据类:
- 2. 创建代理人(MyAgent):
- 3. 创建和运行代理人的运行时环境:
- 4. 根据发送者路由消息的代理(RoutedBySenderAgent):
- 5. 创建和运行带路由的代理:
- 6. 内外代理的通信(InnerAgent 和 OuterAgent)
- 7. 运行内外代理
- 8. 消息广播
- 1. ReceivingAgent:接收消息的代理
- 2. BroadcastingAgent:发布消息的代理
- 3. 注册代理并处理消息
- 4. 默认主题与订阅
- 5. 注册代理并启动消息发布
- 类似例子
完整代码
from dataclasses import dataclass@dataclass
class TextMessage:content: strsource: str@dataclass
class ImageMessage:url: strsource: str
from autogen_core import AgentId, MessageContext, RoutedAgent, SingleThreadedAgentRuntime, message_handlerclass MyAgent(RoutedAgent):@message_handlerasync def on_text_message(self, message: TextMessage, ctx: MessageContext) -> None:print(f"Hello, {message.source}, you said {message.content}!")@message_handlerasync def on_image_message(self, message: ImageMessage, ctx: MessageContext) -> None:print(f"Hello, {message.source}, you sent me {message.url}!")
runtime = SingleThreadedAgentRuntime()
await MyAgent.register(runtime, "my_agent", lambda: MyAgent("My Agent"))
AgentType(type='my_agent')
runtime.start()
agent_id = AgentId("my_agent", "default")
await runtime.send_message(TextMessage(content="Hello, World!", source="User"), agent_id)
await runtime.send_message(ImageMessage(url="https://example.com/image.jpg", source="User"), agent_id)
await runtime.stop_when_idle()
Hello, User, you said Hello, World!!
Hello, User, you sent me https://example.com/image.jpg!
class RoutedBySenderAgent(RoutedAgent):@message_handler(match=lambda msg, ctx: msg.source.startswith("user1")) # type: ignoreasync def on_user1_message(self, message: TextMessage, ctx: MessageContext) -> None:print(f"Hello from user 1 handler, {message.source}, you said {message.content}!")@message_handler(match=lambda msg, ctx: msg.source.startswith("user2")) # type: ignoreasync def on_user2_message(self, message: TextMessage, ctx: MessageContext) -> None:print(f"Hello from user 2 handler, {message.source}, you said {message.content}!")@message_handler(match=lambda msg, ctx: msg.source.startswith("user2")) # type: ignoreasync def on_image_message(self, message: ImageMessage, ctx: MessageContext) -> None:print(f"Hello, {message.source}, you sent me {message.url}!")
runtime = SingleThreadedAgentRuntime()
await RoutedBySenderAgent.register(runtime, "my_agent", lambda: RoutedBySenderAgent("Routed by sender agent"))
runtime.start()
agent_id = AgentId("my_agent", "default")
await runtime.send_message(TextMessage(content="Hello, World!", source="user1-test"), agent_id)
await runtime.send_message(TextMessage(content="Hello, World!", source="user2-test"), agent_id)
await runtime.send_message(ImageMessage(url="https://example.com/image.jpg", source="user1-test"), agent_id)
await runtime.send_message(ImageMessage(url="https://example.com/image.jpg", source="user2-test"), agent_id)
await runtime.stop_when_idle()
Hello from user 1 handler, user1-test, you said Hello, World!!
Hello from user 2 handler, user2-test, you said Hello, World!!
Hello, user2-test, you sent me https://example.com/image.jpg!
from dataclasses import dataclassfrom autogen_core import MessageContext, RoutedAgent, SingleThreadedAgentRuntime, message_handler@dataclass
class Message:content: strclass InnerAgent(RoutedAgent):@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> Message:return Message(content=f"Hello from inner, {message.content}")class OuterAgent(RoutedAgent):def __init__(self, description: str, inner_agent_type: str):super().__init__(description)self.inner_agent_id = AgentId(inner_agent_type, self.id.key)@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> None:print(f"Received message: {message.content}")# Send a direct message to the inner agent and receves a response.response = await self.send_message(Message(f"Hello from outer, {message.content}"), self.inner_agent_id)print(f"Received inner response: {response.content}")
runtime = SingleThreadedAgentRuntime()
await InnerAgent.register(runtime, "inner_agent", lambda: InnerAgent("InnerAgent"))
await OuterAgent.register(runtime, "outer_agent", lambda: OuterAgent("OuterAgent", "inner_agent"))
runtime.start()
outer_agent_id = AgentId("outer_agent", "default")
await runtime.send_message(Message(content="Hello, World!"), outer_agent_id)
await runtime.stop_when_idle()
Received message: Hello, World!
Received inner response: Hello from inner, Hello from outer, Hello, World!
from autogen_core import RoutedAgent, message_handler, type_subscription@type_subscription(topic_type="default")
class ReceivingAgent(RoutedAgent):@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> None:print(f"Received a message: {message.content}")
from autogen_core import TopicIdclass BroadcastingAgent(RoutedAgent):@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> None:await self.publish_message(Message("Publishing a message from broadcasting agent!"),topic_id=TopicId(type="default", source=self.id.key),)
from autogen_core import TypeSubscriptionruntime = SingleThreadedAgentRuntime()# Option 1: with type_subscription decorator
# The type_subscription class decorator automatically adds a TypeSubscription to
# the runtime when the agent is registered.
await ReceivingAgent.register(runtime, "receiving_agent", lambda: ReceivingAgent("Receiving Agent"))# Option 2: with TypeSubscription
await BroadcastingAgent.register(runtime, "broadcasting_agent", lambda: BroadcastingAgent("Broadcasting Agent"))
await runtime.add_subscription(TypeSubscription(topic_type="default", agent_type="broadcasting_agent"))# Start the runtime and publish a message.
runtime.start()
await runtime.publish_message(Message("Hello, World! From the runtime!"), topic_id=TopicId(type="default", source="default")
)
await runtime.stop_when_idle()
Received a message: Hello, World! From the runtime!
Received a message: Publishing a message from broadcasting agent!
from autogen_core import DefaultTopicId, default_subscription@default_subscription
class BroadcastingAgentDefaultTopic(RoutedAgent):@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> None:# Publish a message to all agents in the same namespace.await self.publish_message(Message("Publishing a message from broadcasting agent!"),topic_id=DefaultTopicId(),)
runtime = SingleThreadedAgentRuntime()
await BroadcastingAgentDefaultTopic.register(runtime, "broadcasting_agent", lambda: BroadcastingAgentDefaultTopic("Broadcasting Agent")
)
await ReceivingAgent.register(runtime, "receiving_agent", lambda: ReceivingAgent("Receiving Agent"))
runtime.start()
await runtime.publish_message(Message("Hello, World! From the runtime!"), topic_id=DefaultTopicId())
await runtime.stop_when_idle()
Received a message: Hello, World! From the runtime!
Received a message: Publishing a message from broadcasting agent!
代码解释
1. 消息的数据类:
from dataclasses import dataclass@dataclass
class TextMessage:content: strsource: str@dataclass
class ImageMessage:url: strsource: str
这段代码定义了两个数据类:TextMessage 和 ImageMessage。它们分别用于表示文本消息和图片消息。
- TextMessage 包含两个字段:
content
(消息内容)和source
(发送者)。 - ImageMessage 包含
url
(图片的链接地址)和source
(发送者)。
2. 创建代理人(MyAgent):
from autogen_core import AgentId, MessageContext, RoutedAgent, SingleThreadedAgentRuntime, message_handlerclass MyAgent(RoutedAgent):@message_handlerasync def on_text_message(self, message: TextMessage, ctx: MessageContext) -> None:print(f"Hello, {message.source}, you said {message.content}!")@message_handlerasync def on_image_message(self, message: ImageMessage, ctx: MessageContext) -> None:print(f"Hello, {message.source}, you sent me {message.url}!")
MyAgent 继承自 RoutedAgent 类,并定义了两个消息处理器:
on_text_message
:处理 TextMessage 消息,打印出发送者和内容。on_image_message
:处理 ImageMessage 消息,打印出发送者和图片的链接地址。
3. 创建和运行代理人的运行时环境:
runtime = SingleThreadedAgentRuntime()
await MyAgent.register(runtime, "my_agent", lambda: MyAgent("My Agent"))
runtime.start()
agent_id = AgentId("my_agent", "default")
await runtime.send_message(TextMessage(content="Hello, World!", source="User"), agent_id)
await runtime.send_message(ImageMessage(url="https://example.com/image.jpg", source="User"), agent_id)
await runtime.stop_when_idle()
这段代码启动了一个单线程的运行时环境 SingleThreadedAgentRuntime
。
- 注册了 MyAgent 代理,代理名称为
my_agent
。 - 使用
runtime.send_message
向代理发送了一条文本消息和一条图片消息。 - 最后,运行时环境会在空闲时停止。
4. 根据发送者路由消息的代理(RoutedBySenderAgent):
class RoutedBySenderAgent(RoutedAgent):@message_handler(match=lambda msg, ctx: msg.source.startswith("user1")) # type: ignoreasync def on_user1_message(self, message: TextMessage, ctx: MessageContext) -> None:print(f"Hello from user 1 handler, {message.source}, you said {message.content}!")@message_handler(match=lambda msg, ctx: msg.source.startswith("user2")) # type: ignoreasync def on_user2_message(self, message: TextMessage, ctx: MessageContext) -> None:print(f"Hello from user 2 handler, {message.source}, you said {message.content}!")@message_handler(match=lambda msg, ctx: msg.source.startswith("user2")) # type: ignoreasync def on_image_message(self, message: ImageMessage, ctx: MessageContext) -> None:print(f"Hello, {message.source}, you sent me {message.url}!")
RoutedBySenderAgent 继承自 RoutedAgent,并通过 message_handler
装饰器根据消息的发送者 (source) 来路由消息。
- 如果消息来自以
user1
开头的发送者,它会调用on_user1_message
处理文本消息。 - 如果消息来自以
user2
开头的发送者,它会调用on_user2_message
处理文本消息。 - 如果是来自
user2
的图片消息,则调用on_image_message
进行处理。
5. 创建和运行带路由的代理:
runtime = SingleThreadedAgentRuntime()
await RoutedBySenderAgent.register(runtime, "my_agent", lambda: RoutedBySenderAgent("Routed by sender agent"))
runtime.start()
agent_id = AgentId("my_agent", "default")
await runtime.send_message(TextMessage(content="Hello, World!", source="user1-test"), agent_id)
await runtime.send_message(TextMessage(content="Hello, World!", source="user2-test"), agent_id)
await runtime.send_message(ImageMessage(url="https://example.com/image.jpg", source="user1-test"), agent_id)
await runtime.send_message(ImageMessage(url="https://example.com/image.jpg", source="user2-test"), agent_id)
await runtime.stop_when_idle()
在这个部分,运行时环境启动并注册了 RoutedBySenderAgent 代理。
发送了不同来源的文本消息和图片消息。
根据消息的 source 字段,消息会被路由到对应的处理函数。
最终,代理会打印不同的响应信息,取决于消息的发送者。
6. 内外代理的通信(InnerAgent 和 OuterAgent)
@dataclass
class Message:content: strclass InnerAgent(RoutedAgent):@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> Message:return Message(content=f"Hello from inner, {message.content}")class OuterAgent(RoutedAgent):def __init__(self, description: str, inner_agent_type: str):super().__init__(description)self.inner_agent_id = AgentId(inner_agent_type, self.id.key)@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> None:print(f"Received message: {message.content}")response = await self.send_message(Message(f"Hello from outer, {message.content}"), self.inner_agent_id)print(f"Received inner response: {response.content}")
InnerAgent
是一个简单的代理,它收到消息后,返回一个修改过的消息。
OuterAgent
也作为代理存在,并包含对 InnerAgent
的引用。它会发送消息给 InnerAgent
,并等待回应。
7. 运行内外代理
runtime = SingleThreadedAgentRuntime()
await InnerAgent.register(runtime, "inner_agent", lambda: InnerAgent("InnerAgent"))
await OuterAgent.register(runtime, "outer_agent", lambda: OuterAgent("OuterAgent", "inner_agent"))
runtime.start()
outer_agent_id = AgentId("outer_agent", "default")
await runtime.send_message(Message(content="Hello, World!"), outer_agent_id)
await runtime.stop_when_idle()
这个部分启动了 InnerAgent
和 OuterAgent
代理。
OuterAgent
会发送一条消息给 InnerAgent
,并接收到来自 InnerAgent
的响应。
最终,输出显示了 OuterAgent
接收到的消息以及 InnerAgent
的响应。
8. 消息广播
这一部分涉及了通过 topic 和 subscription 实现的消息广播和接收机制。它展示了如何通过 topic 来发布消息以及如何订阅消息。
1. ReceivingAgent:接收消息的代理
from autogen_core import RoutedAgent, message_handler, type_subscription@type_subscription(topic_type="default")
class ReceivingAgent(RoutedAgent):@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> None:print(f"Received a message: {message.content}")
ReceivingAgent
继承自 RoutedAgent
,并使用了 @type_subscription(topic_type="default")
装饰器。这个装饰器将代理与某个类型的 topic(本例中是 default)关联。
当收到来自 default 主题的消息时,代理会调用 on_my_message
方法,并打印出消息内容。
2. BroadcastingAgent:发布消息的代理
from autogen_core import TopicIdclass BroadcastingAgent(RoutedAgent):@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> None:await self.publish_message(Message("Publishing a message from broadcasting agent!"),topic_id=TopicId(type="default", source=self.id.key),)
BroadcastingAgent
也继承自 RoutedAgent
,它定义了一个消息处理方法,当收到消息时,它会发布一条新的消息,消息内容为 “Publishing a message from broadcasting agent!”。
这条消息会发布到 default 主题,且 topic_id 包含代理的 source(即 self.id.key)作为源。
3. 注册代理并处理消息
from autogen_core import TypeSubscriptionruntime = SingleThreadedAgentRuntime()# Option 1: with type_subscription decorator
await ReceivingAgent.register(runtime, "receiving_agent", lambda: ReceivingAgent("Receiving Agent"))# Option 2: with TypeSubscription
await BroadcastingAgent.register(runtime, "broadcasting_agent", lambda: BroadcastingAgent("Broadcasting Agent"))
await runtime.add_subscription(TypeSubscription(topic_type="default", agent_type="broadcasting_agent"))# Start the runtime and publish a message.
runtime.start()
await runtime.publish_message(Message("Hello, World! From the runtime!"), topic_id=TopicId(type="default", source="default")
)
await runtime.stop_when_idle()
runtime
创建了一个单线程的运行时环境。
选项 1:通过 @type_subscription
装饰器,ReceivingAgent
被注册到运行时,它会订阅 default 主题。
选项 2:BroadcastingAgent
注册后,通过 runtime.add_subscription()
将其与 default 主题的消息订阅关联起来。
runtime.start()
启动运行时并发布了一条消息 “Hello, World! From the runtime!”,这条消息会被所有订阅 default 主题的代理接收。
由于 ReceivingAgent
订阅了 default 主题,它会接收到来自 runtime.publish_message
的消息,并输出 “Received a message: Hello, World! From the runtime!”。
之后,BroadcastingAgent
发布了一条消息 “Publishing a message from broadcasting agent!”,并发送到 default 主题。
4. 默认主题与订阅
from autogen_core import DefaultTopicId, default_subscription@default_subscription
class BroadcastingAgentDefaultTopic(RoutedAgent):@message_handlerasync def on_my_message(self, message: Message, ctx: MessageContext) -> None:# Publish a message to all agents in the same namespace.await self.publish_message(Message("Publishing a message from broadcasting agent!"),topic_id=DefaultTopicId(),)
BroadcastingAgentDefaultTopic
通过 @default_subscription
装饰器,订阅了一个特殊的默认主题(DefaultTopicId()
)。
当它收到消息时,它会将 “Publishing a message from broadcasting agent!” 消息发布到同一命名空间的所有代理,所有订阅该主题的代理都会收到这条消息。
5. 注册代理并启动消息发布
runtime = SingleThreadedAgentRuntime()
await BroadcastingAgentDefaultTopic.register(runtime, "broadcasting_agent", lambda: BroadcastingAgentDefaultTopic("Broadcasting Agent")
)
await ReceivingAgent.register(runtime, "receiving_agent", lambda: ReceivingAgent("Receiving Agent"))
runtime.start()
await runtime.publish_message(Message("Hello, World! From the runtime!"), topic_id=DefaultTopicId())
await runtime.stop_when_idle()
-
注册了
BroadcastingAgentDefaultTopic
和ReceivingAgent
两个代理。 -
在运行时启动后,
runtime.publish_message
发布了一条消息 “Hello, World! From the runtime!” 到默认主题 DefaultTopicId(),这个消息会被 ReceivingAgent 接收并打印。 -
随后,BroadcastingAgentDefaultTopic 会发布一条消息 “Publishing a message from broadcasting agent!”,并将其广播到同一个命名空间中的所有代理,ReceivingAgent 收到这条消息并打印。
类似例子
from autogen_core import RoutedAgent, message_handler, type_subscription, TopicId# Agent that will receive status updates
@type_subscription(topic_type="status")
class StatusReceiverAgent(RoutedAgent):@message_handlerasync def on_status_update(self, message: Message, ctx: MessageContext) -> None:print(f"Status received: {message.content}")# Agent that publishes status updates
@type_subscription(topic_type="command")
class StatusPublisherAgent(RoutedAgent):@message_handlerasync def on_command_message(self, message: Message, ctx: MessageContext) -> None:# Publish a status update to the "status" topicawait self.publish_message(Message("System is up and running!"),topic_id=TopicId(type="status", source=self.id.key),)# Agent runtime and agent registration
runtime = SingleThreadedAgentRuntime()# Register the status receiver and publisher agents
await StatusReceiverAgent.register(runtime, "status_receiver", lambda: StatusReceiverAgent("Status Receiver"))
await StatusPublisherAgent.register(runtime, "status_publisher", lambda: StatusPublisherAgent("Status Publisher"))# Start the runtime and simulate sending a command to the publisher
runtime.start()# The publisher publishes a status update when it receives a message (e.g., "send status update")
await runtime.publish_message(Message("send status update"), topic_id=TopicId(type="command", source="status_publisher"))# The receiver will print the status update message
await runtime.stop_when_idle()
输出
Status received: System is up and running!
参考链接:
https://microsoft.github.io/autogen/stable/user-guide/core-user-guide/framework/message-and-communication.html
相关文章:
Autogen_core: Message and Communication
目录 完整代码代码解释1. 消息的数据类:2. 创建代理人(MyAgent):3. 创建和运行代理人的运行时环境:4. 根据发送者路由消息的代理(RoutedBySenderAgent):5. 创建和运行带路由的代理&a…...
ComfyUI工作流教程、软件使用、开发指导、模型下载
在人工智能和设计技术迅速发展的今天,AI赋能的工作流已成为创意设计与生产的重要工具。无论是图片处理、服装试穿,还是室内设计与3D建模,这些智能化的解决方案极大地提高了效率和创作质量。 为了帮助设计师、开发者以及AI技术爱好者更好地利用这些工具,我们整理了一份详尽…...

零基础Vue学习1——Vue学习前环境准备
目录 环境准备 创建Vue项目 项目目录说明 后续开发过程中常用命令 环境准备 安装开发工具:vscode、webstorm、idea都可以安装node:V22以上版本即可安装pnpm 不知道怎么安装的可以私信我教你方法 创建Vue项目 本地新建一个文件夹,之后在文件夹下打开…...

定西市建筑房屋轮廓数据shp格式gis无偏移坐标(字段有高度和楼层)内容测评
定西市建筑房屋轮廓数据是GIS(Geographic Information System,地理信息系统)领域的重要资源,用于城市规划、土地管理、环境保护等多个方面。这份2022年的数据集采用shp(Shapefile)格式,这是一种…...

汉语向编程指南
汉语向编程指南 一、引言王阳明代数与流形学习理论慢道缓行理性人类型指标系统为己之学与意气实体过程晏殊几何学半可分离相如矩阵与生成气质邻域镶嵌气度曲面细分生成气质邻域镶嵌气度曲面细分社会科学概论琴生生物机械科技工业研究所软凝聚态物理开发工具包琴生生物机械 报告…...
Writing an Efficient Vulkan Renderer
本文出自GPU Zen 2。 Vulkan 是一个新的显式跨平台图形 API。它引入了许多新概念,即使是经验丰富的图形程序员也可能不熟悉。Vulkan 的主要目标是性能——然而,获得良好的性能需要深入了解这些概念及其高效应用方法,以及特定驱动程序实现的实…...
AI常见的算法
人工智能(AI)中常见的算法分为多个领域,如机器学习、深度学习、强化学习、自然语言处理和计算机视觉等。以下是一些常见的算法及其用途: 1. 机器学习 (Machine Learning) 监督学习 (Supervised Learning) 线性回归 (Linear Regr…...

LibreChat
文章目录 一、关于 LibreChat✨特点 二、使用LibreChat🪶多合一AI对话 一、关于 LibreChat LibreChat 是增强的ChatGPT克隆:Features Agents, Anthropic, AWS, OpenAI, Assistants API, Azure, Groq, o1, GPT-4o, Mistral, OpenRouter, Vertex AI, Gemi…...

Spring Boot 日志:项目的“行车记录仪”
一、什么是Spring Boot日志 (一)日志引入 在正式介绍日志之前,我们先来看看上篇文章中(Spring Boot 配置文件)中的验证码功能的一个代码片段: 这是一段校验用户输入的验证码是否正确的后端代码,…...

Spring Boot 实现文件上传和下载
文章目录 Spring Boot 实现文件上传和下载一、引言二、文件上传1、配置Spring Boot项目2、创建文件上传控制器3、配置文件上传大小限制 三、文件下载1、创建文件下载控制器 四、使用示例1、文件上传2、文件下载 五、总结 Spring Boot 实现文件上传和下载 一、引言 在现代Web应…...

慕课:若鱼1919的视频课程:Java秒杀系统方案优化 高性能高并发实战,启动文档
代码: Javahhhh/miaosha191: 运行成功了慕课若鱼1919的视频课程:Java秒杀系统方案优化 高性能高并发实战https://github.com/Javahhhh/miaosha191 https://github.com/Javahhhh/miaosha191 miaosha项目启动文档 需安装的配置环境: VMwar…...

React第二十七章(Suspense)
Suspense Suspense 是一种异步渲染机制,其核心理念是在组件加载或数据获取过程中,先展示一个占位符(loading state),从而实现更自然流畅的用户界面更新体验。 应用场景 异步组件加载:通过代码分包实现组件…...
虚幻基础08:组件接口
能帮到你的话,就给个赞吧 😘 文章目录 作用 作用 组件接口:可以直接调用对方的组件接口,而无需转换为actor。 实现对象间的通知。 A 通知 B 做什么。...

iPhone SE(第三代) 设备详情图
目录 产品宣传图内部图——后设备详细信息 产品宣传图 内部图——后 设备详细信息 信息收集于HubWeb.cn...

2025苹果CMS v10短剧模板源码
文件不到70kb,加载非常快 无配置,没有详情页,上传就可以直接使用 使用教程:上传到网站template目录并解压、进入网站后台选择模板 注意:默认调用ID为1的数据和扩展分类,建议新建站使用 源码下载…...

2007-2020年各省国内专利申请授权量数据
2007-2020年各省国内专利申请授权量数据 1、时间:2007-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、国内专利申请授权量(项) 4、范围:31省 5、指标解释:专利是专利权的简称&…...
第一天-嵌入式应用开发介绍
首先,我们来介绍一下嵌入式的发展路线,虽然嵌入式的知识点众多,但是总体上来说,嵌入式分为以下两条主要路线: 单片机开发ArmLinux开发 当然,还有其他的一些例如FPGA这种的我们就不计算在内了,F…...
约瑟夫问题(信息学奥赛一本通-2037)
【题目描述】 N个人围成一圈,从第一个人开始报数,数到M的人出圈;再由下一个人开始报数,数到M 的人出圈;…输出依次出圈的人的编号。 【输入】 输入N和M。 【输出】 输出一行,依次出圈的人的编号。 【输入样…...

WPF5-x名称空间
1. x名称空间2. x名称空间内容3. x名称空间内容分类 3.1. x:Name3.2. x:Key3.3. x:Class3.4. x:TypeArguments 4. 总结 1. x名称空间 “x名称空间”的x是映射XAML名称空间时给它取的名字(取XAML的首字母),里面的成员(如x:Class、…...

一个python项目中的文件和目录的作用是什么?scripts,venv,predict的具体含义
今天学习SadTalker的项目,但目录和文件不知道都是干什么的,总结记录下,方便后续使用。 目录 1. docs: 作用: 这个文件夹通常包含项目的文档。文档可能包括用户指南、API 文档、开发文档等。 2. examples: 作用: 这里通常包含一些示例代码…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...