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

AutoGen入门——快速实现多角色、多用户、多智能体对话系统

1.前言

autogen
如https://github.com/microsoft/autogen所述,autogen是一多智能体的框架,属于微软旗下的产品。

依靠AutoGen我们可以快速构建出一个多智能体应用,以满足我们各种业务场景。

本文将以几个示例场景,使用AutoGen快速构建出多智能体应用,一起体验下它的具体用法。

2.环境说明

env
用到的工具如下:

  • python,3.11
  • AutoGen,0.4.2
  • chainlit,2.0.2
  • 大模型,deepseek

安装以下依赖

pip install -U “autogen-agentchat” “autogen-ext[openai]”

autogen的版本为0.4.2

用到的UI交互界面为Chainlit,安装chainlit命令为:

pip install chainlit

3.示例一,单智能体

应用场景:挂号导诊台机器人,输入症状描述和需求,输出应该挂号的科室。

代码如下:

import chainlit as cl
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient@cl.on_chat_start
async def main():await cl.Message(content="您好,这里是超级无敌大医院,有什么可以帮您?").send()async def run_team(query: str):model_client = OpenAIChatCompletionClient(model="deepseek-chat", base_url="https://api.deepseek.com",api_key="PEPLACE-YOUR-API-KEY", model_info={"vision": False,"function_calling": False,"json_output": True,"family": "unknown",}, )assistant_agent = AssistantAgent("assistant", model_client=model_client,system_message="你是一所口腔医院的导诊台机器人,负责解答用户的挂号问题,用户描述症状需求,你回答应该挂的科室。""在本医院中有以下科室:牙体牙髓科、口腔修复科、口腔外科、口腔种植科、儿童口腔专科。""如果用户的问题与挂号咨询不符合,回答:“您的描述与症状无关,暂不支持”")team = RoundRobinGroupChat(participants=[assistant_agent], max_turns=1)response_stream = team.run_stream(task=query)async for msg in response_stream:if hasattr(msg, "source") and msg.source != "user" and hasattr(msg, "content"):msg = cl.Message(content=msg.content, author="Agent Team")await msg.send()@cl.on_message
async def main(message: cl.Message):await run_team(message.content)

运行:

chainlit run .\nurses_station_ai.py -w

运行效果:
single-ai

4.示例二,智能体与FunctionCall

示例应用场景:病情初诊机器人,输入症状描述,系统根据症状查询此患者的相关历史资料,如无则建议先进行资料预备,并推送至人工团队进行流程审核

4.1 示例流程

模拟流程图如下:

demo-process

病情初诊机器人Agent根据用户描述的症状和对应的牙位号获取出对应的CT影像信息,如信息不足主动向用户发起询问,或询问用户是否需要发起审批
如信息已具备,则根据CT影像信息进行自动诊断,并将分析出结果展示给用户。

4.2 示例代码与演示

编写python文件:endodontics_dentistry_ai.py。代码如下:

import chainlit as cl
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient@cl.password_auth_callback
def auth_callback(username: str, password: str):if (username, password) == ("admin", "admin"):return cl.User(identifier="admin", metadata={"role": "admin", "provider": "credentials"})elif (username, password) == ("puhaiyang", "123456"):return cl.User(identifier="puhaiyang", metadata={"role": "admin", "provider": "credentials"})else:return None@cl.on_chat_start
async def main():await cl.Message(content="您好,这里是牙体牙髓科,您牙齿哪里不适?").send()async def x_p_search(tooth_position: str) -> str:"""Find information on the web"""app_user = cl.user_session.get("user")print(f"模拟查询{app_user.identifier}{tooth_position}牙片数据")if tooth_position == "46":return "牙根尖处有阴影,疑似感染,需要进一步分析诊断"else:return f"{tooth_position}无影像"async def run_team(query: str):model_client = OpenAIChatCompletionClient(model="deepseek-chat", base_url="https://api.deepseek.com",api_key="PEPLACE-YOUR-API-KEY", model_info={"vision": False,"function_calling": True,"json_output": True,"family": "unknown",}, )assistant_agent = AssistantAgent("assistant", model_client=model_client, tools=[x_p_search],system_message="你是一个牙体牙髓科的病情诊断机器人,负责对用户输入的症状描述分析原因,在分析病因前先询问出用户是具体哪一颗牙齿需要治疗。""在知道了具体的牙位号后,再调用x_p_search工具进行问题回答,传入给x_p_search工具的参数需要自动转为牙位号,如:28""如果用户的问题与病情咨询无关,回答:“您的描述与症状无关,暂不支持”")team = RoundRobinGroupChat(participants=[assistant_agent], max_turns=1)response_stream = team.run_stream(task=query)async for msg in response_stream:if hasattr(msg, "source") and (msg.type == "ToolCallExecutionEvent" or msg.type == "ToolCallRequestEvent"):# functionCall事件消息不显示给用户continueif hasattr(msg, "source") and msg.source != "user" and hasattr(msg, "content"):if msg.content.endswith("无影像"):res = await cl.AskActionMessage(content=f"{msg.content},是否需要帮您申请拍摄此牙的CT影像?",actions=[cl.Action(name="continue", payload={"value": "申请"}, label="✅ 申请牙片"),cl.Action(name="cancel", payload={"value": "取消"}, label="❌ 取消"),],).send()if res and res.get("payload").get("value") == "申请":await cl.Message(content="牙片申请已提交!待审核通过后前往第3影像室进行拍摄。",).send()else:msg = cl.Message(content=msg.content, author="Agent Team")await msg.send()@cl.on_message
async def main(message: cl.Message):await run_team(message.content)

运行:

chainlit run .\endodontics_dentistry_ai.py -w

运行效果
ai-functioncall

4.3 chainlit认证配置

上面的示例代码中使用到了chainlit中的认证(Authentication)功能,并在代码中模拟了两个用户。
当首次访问智能体应用的界面时会弹出登录界面,以让我们先输入登录信息后才能使用此应用。
login

首次运行chainlit需要生成密钥

chainlit create-secret

之后在项目根目录创建 .env 文件,填入前面生成的secret信息,如:

CHAINLIT_AUTH_SECRET="WaElB8_~5Bif=~Yz,-y0d01~J-r$P_hoj3ihfCr_c2qwtv?J@>.7tEF.Tb9CE$*A"

5. 示例三,多智能体自动选择

此功能涉及到的技术点为Selector Group Chat。

示例应用场景:用户同一时间多个不同科室的专家医生咨询问题,每轮向用户解答的医生都是问题相关度最高的科室医生

yes-no

5.1 示例流程

mul-process

如:牙体牙髓科AI、修复科AI、种植牙AI形成一个专家团队,用户向这个专家团队提问,专家团队每次派一个最专业的代表来解答问题。

5.2 示例代码与演示

编写python文件:dentistry_selector_ai.py。代码如下:

import chainlit as clfrom autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import MaxMessageTermination, TextMentionTermination
from autogen_agentchat.teams import SelectorGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClientmodel_client = OpenAIChatCompletionClient(model="deepseek-chat", base_url="https://api.deepseek.com",api_key="PEPLACE-YOUR-API-KEY", model_info={"vision": False,"function_calling": True,"json_output": True,"family": "unknown",}, )planning_agent = AssistantAgent("PlanningAgent",description="用于规划的Agent,当一个任务到达时此Agent是第一个参与者",model_client=model_client,system_message="""你是一个任务规划智能体。你的工作是将复杂的任务分解为更小的、可管理的子任务。你的团队成员有3个,分别是:DentalPulpAgent: 牙体牙髓科智能体RestorativeAgent: 牙齿修复科智能体DentalImplantAgent: 牙齿种植科智能体你只计划和委派任务,而不自己执行它们分配任务时,请使用此格式:1. <agent> : <task>当所有智能体把任务完成后,再总结结果以"TERMINATE"结束。                        """)dental_pulp_agent = AssistantAgent("DentalPulpAgent",description="牙体牙髓科智能体",model_client=model_client,system_message="""你是一个口腔医院的牙体牙髓科智能体。你可以解答关于牙体牙髓科中患者提出的问题,你的解答非常专业,且可靠。""")restorative_agent = AssistantAgent("RestorativeAgent",description="牙齿修复科智能体",model_client=model_client,system_message="""你是一个口腔医院的牙齿修复科智能体。你可以解答关于牙齿修复中患者提出的问题,比如牙冠、烤瓷牙、嵌体修复等。你的解答非常专业,且可靠。""")dental_implant_agent = AssistantAgent("DentalImplantAgent",description="牙齿种植科智能体",model_client=model_client,system_message="""你是一个口腔医院的牙齿种植科的智能体。你可以解答关于牙齿种植科中患者提出的问题,你的解答非常专业,且可靠。""")@cl.on_chat_start
async def main():await cl.Message(content="您好,这里是口腔医院专家团队,有什么可以帮您?").send()async def run_team(query: str):text_mention_termination = TextMentionTermination("TERMINATE")max_messages_termination = MaxMessageTermination(max_messages=25)termination = text_mention_termination | max_messages_terminationteam = SelectorGroupChat([planning_agent, dental_pulp_agent, restorative_agent, dental_implant_agent],model_client=model_client,termination_condition=termination,)response_stream = team.run_stream(task=query)async for msg in response_stream:if hasattr(msg, "source") and msg.source != "user" and hasattr(msg, "content"):msg = cl.Message(content=msg.content, author=msg.source)await msg.send()@cl.on_message
async def main(message: cl.Message):await run_team(message.content)

运行:

chainlit run .\dentistry_selector_ai.py -w

分别提出问题:

什么是烤瓷牙?
什么是根管治疗?

selector-ai

从上面运行结果可知,当问到根管治疗相关问题时,会由DentalPulpAgent(牙体牙髓科智能体)来回答问题。
当问到烤瓷牙相关问题时,会由RestorativeAgent(牙齿修复科智能体)来回答问题。

之所以能做到自动切换智能体,其原因为在问题执行前会由任务规划智能体(PlanningAgent)进行预规划,由它根据问题的描述分配到对应的智能体。

6.AutoGen Studio工作流UI

前面几个示例都是用python代码的方式创建智能体,对于用户有一定的编码要求,且流程处理上也不够直观。

比较好的是AutoGen中也提供了与Dify类似UI界面操作的方式,即:AutoGen Studio。

安装时,直接使用如下命令安装:

pip install -U autogenstudio

启动时指定监听端口运行目录,如:

autogenstudio ui --port 8081 --appdir autogenstuido_test

之后访问http://127.0.0.1:8081/,即可进入AutoGen Studio界面
autogen-studio-1

使用时可以看到AutoGen Studio的一些功能上还有experimental标签,且功能支持度目前还不是很多
autogen-studio-diagram

但从支持流程与节点编辑这些功能点来看还是非常棒的,待后续更新后再继续体验

相关文章:

AutoGen入门——快速实现多角色、多用户、多智能体对话系统

1.前言 如https://github.com/microsoft/autogen所述&#xff0c;autogen是一多智能体的框架&#xff0c;属于微软旗下的产品。 依靠AutoGen我们可以快速构建出一个多智能体应用&#xff0c;以满足我们各种业务场景。 本文将以几个示例场景&#xff0c;使用AutoGen快速构建出…...

.NET Framework

.NET Framework 是微软推出的一个软件开发平台&#xff0c;主要用于构建和运行 Windows 应用程序。它是 .NET 生态系统的早期版本&#xff0c;专注于 Windows 平台&#xff0c;并提供了丰富的类库和运行时环境。 注意事项 跨平台限制&#xff1a;.NET Framework 主要适用于 W…...

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧&#xff0c;主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口&#xff0c;可以在一维数组或字符串上维护一个固定或可变长度的窗口&#xff0c;逐步移动窗口&#xff0c;避免重复计算&#xff0c;从而提升效率。常…...

DuckDB:Golang操作DuckDB实战案例

DuckDB是一个嵌入式SQL数据库引擎。它与众所周知的SQLite非常相似&#xff0c;但它是为olap风格的工作负载设计的。DuckDB支持各种数据类型和SQL特性。凭借其在以内存为中心的环境中处理高速分析的能力&#xff0c;它迅速受到数据科学家和分析师的欢迎。在这篇博文中&#xff0…...

C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外)

👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… ​💫签名:面朝大海,春暖花开! C++通过输入3D相机像素点集{u、v、z}和机械手世界坐标点集{X、Y、Z}求得变换矩阵RT(眼在手外) 引言原理简介点集数据(含像素坐标、世界坐标及求解后的变换矩阵)配…...

手机怎么远程操控电脑?

远程看看是一款免费使用的远程控制软件&#xff0c;兼容 Windows、iOS 和 Android 系统&#xff0c;用户可以通过电脑或移动设备轻松远程控制电脑。不仅如此&#xff0c;远程看看还提供了文件传输、在线聊天和隐私屏等实用功能。如果您需要在远程操作时隐藏被控电脑的操作界面&…...

【Golang/gRPC/Nacos】在golang中将gRPC和Nacos结合使用

Nacos与gRPC 前言 关于这部分&#xff0c;前段时间我在看文档以及视频教程的时候&#xff0c;怎么都想不明白&#xff0c;到底为什么要用gRPC是什么&#xff0c;他在项目中应该充当什么样的角色&#xff1f;Nacos又是如何和他结合的&#xff1f; 于是我就决定去看看一些小项…...

数据库-多表关系

项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构。由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系。 多表关系&#xff1a; 一对多(多对一) 一对一 多对多 多表关系 一对…...

回归算法、聚类算法、决策树、随机森林、神经网络

这也太全了&#xff01;回归算法、聚类算法、决策树、随机森林、神经网络、贝叶斯算法、支持向量机等十大机器学习算法一口气学完&#xff01;_哔哩哔哩_bilibili 【线性回归、代价函数、损失函数】动画讲解_哔哩哔哩_bilibili 14分钟详解所有机器学习算法&#xff1a;…...

RabbitMQ1-消息队列

目录 MQ的相关概念 什么是MQ 为什么要用MQ MQ的分类 MQ的选择 RabbitMQ RabbitMQ的概念 四大核心概念 RabbitMQ的核心部分 各个名词介绍 MQ的相关概念 什么是MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&am…...

第17章:Python TDD回顾与总结货币类开发

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

7、数组知识点汇总

一、 数组基本概念 程序算法数据结构 算法&#xff1a;解决程序的流程步骤数据结构&#xff1a;将数据按照某种特定的结构来存储设计良好的数据结构会导致良好的算法。ArrayList、LinkedList 数组是最简单的数据结构。 1、数组&#xff1a; 数组&#xff1a;存放同一种类型…...

蓝桥杯c/c++需要掌握的基础语法总结

1、#include<bits/stdc.h> 万能头文件 2、using namespace std&#xff1b; 3、输出 cout<<""<<end1; (换行) printf(""); 4、int x3&#xff1b;整数 double d3.14&#xff1b;小数 char ch’A‘;字符 char s[]"Hell…...

学习第七十四行

qt调用信号与槽机制&#xff1a; MOC查找头文件中的signal与slots&#xff0c;标记出信号槽。将信号槽信息储存到类静态变量staticMetaObject中&#xff0c;并按照声明的顺序进行存放&#xff0c;建立索引。connect链接&#xff0c;将信号槽的索引信息放到一个双向链表中&…...

《罗宾逊-旅途VR》Build2108907官方学习版

《罗宾逊-旅途VR》官方版 https://pan.xunlei.com/s/VODiY5gn_fNxKREdVRdwVboCA1?pwdsh3f# 从第一人称的角度进行探索&#xff0c;玩家将遇到一系列恐龙和生物&#xff0c;这些恐龙和生物会对它们在泰森三世生态系统中的存在做出反应。强调与周围环境的互动&#xff0c;鼓励玩…...

详解共享WiFi小程序怎么弄!

在数字化时代&#xff0c;共享WiFi项目​正逐渐成为公共场所的新标配&#xff0c;它不仅为用户提供了便捷的上网方式&#xff0c;还为商家带来了额外的收入来源。那么共享wifi怎么弄&#xff0c;如何搭建并运营一个成功的共享WiFi项目呢&#xff1f; 共享WiFi项目通过在公共场所…...

Glide加载gif遇到的几个坑

Glide本身支持gif格式的动画加载&#xff0c;但是大多数情况下我们用Glide都是去加载一些静态图片&#xff0c;加载gif动态图的需求不是很多&#xff0c;因此这次使用Glide加载gif就遇到了一些令人匪夷所思的问题 问题一&#xff1a;加载gif图片会有明显的卡顿 通常情况下我们…...

mybatis(19/134)

大致了解了一下工具类&#xff0c;自己手敲了一边&#xff0c;java的封装还是真的省去了很多麻烦&#xff0c;封装成一个工具类就可以不用写很多重复的步骤&#xff0c;一个工厂对应一个数据库一个environment就好了。 mybatis中调用sql中的delete占位符里面需要有字符&#xf…...

部分“古董机”编程读取文件时出现文件损坏的简易处理办法(简单粗暴) - 随笔

在部分老旧计算机&#xff08;通常被戏称为“古董机”&#xff09;上编程&#xff0c;读取文件时可能会遇到文件损坏的问题。这通常是由于硬件性能限制或操作系统的文件处理机制导致的。本文将介绍几种简易的处理办法&#xff0c;以解决或绕过这一问题。 方法1. 调整磁盘关闭时…...

StarRocks 3.4 发布--AI 场景新支点,Lakehouse 能力再升级

自 StarRocks 3.0 起&#xff0c;社区明确了以 Lakehouse 为核心的发展方向。Lakehouse 的价值在于融合数据湖与数据仓库的优势&#xff0c;能有效应对大数据量增长带来的存储成本压力&#xff0c;做到 single source of truth 的同时继续拥有极速的查询性能&#xff0c;同时也…...

强化学习入门--基本概念

强化学习基本概念 grid-world example 这个指的是一个小机器人&#xff08;agent&#xff09;在一个网格区域&#xff08;存在边界&#xff09;&#xff0c;网格中存在需要躲避的格子和目标格子&#xff0c;我们的目的就是找到到达目标格子的最短路径 state 表示智能体相对…...

Oracle 创建并使用外部表

目录 一. 什么是外部表二. 创建外部表所在的文件夹对象三. 授予访问外部表文件夹的权限3.1 DBA用户授予普通用户访问外部表文件夹的权限3.2 授予Win10上的Oracle用户访问桌面文件夹的权限 四. 普通用户创建外部表五. 查询六. 删除 一. 什么是外部表 在 Oracle 数据库中&#x…...

深度学习python基础(第三节) 函数、列表

本节主要介绍函数、列表的基本语法格式。 函数 与c语言的函数差不多&#xff0c;就是语法基本格式不同。 name "loveyou" length len(name) print("字符串的长度为&#xff1a;%d" % length) # 自定义函数 def countstr(data):count 0for i in da…...

基于Python的多元医疗知识图谱构建与应用研究(上)

一、引言 1.1 研究背景与意义 在当今数智化时代,医疗数据呈爆发式增长,如何高效管理和利用这些数据,成为提升医疗服务质量的关键。传统医疗数据管理方式存在数据孤岛、信息整合困难等问题,难以满足现代医疗对精准诊断和个性化治疗的需求。知识图谱作为一种知识表示和管理…...

Spring Boot 快速创建项目

目录 一. 创建项目 ​编辑 二. 项目目录 三. 运行项目 (1) 启动项目 (2) 输出HelloWorld 一. 创建项目 我们以idea专业版为例创建Spring项目: 步骤: (1) File --> New --> Project (2) 配置项目基本信息 (3) 依赖: 需要什么就勾选什么. 我们这里就只勾选一个Spri…...

MySQL预编译语句过多告警排查

业务背景 在使用Spring Cloud Alibaba搭建的微服务架构中&#xff0c;项目采用ShardingSphere进行分库分表&#xff0c;MyBatis-Plus作为持久层。线上环境突发大量预编译语句过多的数据库告警&#xff0c;导致系统性能下降。 排查过程 1. 初步排查&#xff1a;联系云数据库厂…...

在centos上编译安装opensips【初级-默认安装】

环境&#xff1a;centos9 last opensips3.2 dnf update -y dnf install -y gcc make git automake libtool pcre-devel libxml2-devel \libcurl-devel postgresql-devel \bzip2-devel zlib-devel ncurses-devel libuuid-devel \libpcap-devel # 有报错的直接删除cd /usr/lo…...

偏序关系.

一、偏序&#xff08;半序&#xff09;关系 偏序关系 自反反对称传递性 二、全序&#xff08;线序、链&#xff09;关系 三、偏序集中的重要元素 1. 极大元与极小元 极大元找所在集合的一个或几个最高点&#xff1b; 极小元找所在集合的一个或几个最低点。 2. 最大元与最小…...

Node.js接收文件分片数据并进行合并处理

前言&#xff1a;上一篇文章讲了如何进行文件的分片&#xff1a;Vue3使用多线程处理文件分片任务&#xff0c;那么本篇文章主要看一下后端怎么接收前端上传来的分片并进行合并处理。 目录&#xff1a; 一、文件结构二、主要依赖1. express2. multer3. fs (文件系统模块)4. pat…...

设计模式概述 - 设计模式的重要性

引言 设计模式是软件工程中用于解决常见设计问题的经典解决方案。它们提供了一种标准化的方式来组织和设计代码&#xff0c;使得代码更易于理解、维护和扩展。在C编程中&#xff0c;设计模式尤为重要&#xff0c;因为它们可以帮助开发者应对复杂的系统设计&#xff0c;提高代码…...

OSI5GWIFI自组网协议层次对比

目录 5G网络5G与其他协议栈各层映射 5G网络 物理层 (PHY) 是 5G 基站协议架构的最底层&#xff0c;负责将数字数据转换为适合无线传输的信号&#xff0c;并将接收到的无线信号转换为数字数据。实现数据的编码、调制、多天线处理、资源映射等操作。涉及使用新的频段&#xff08…...

网络安全(渗透)

目录 名词解释 2、相互关系 3. 安全影响 名词解释 1、poc、exp、payload与shellcode POC&#xff08;Proof of Concept&#xff09;&#xff1a; 是一种概念验证代码或演示程序&#xff0c;用于证明漏洞的存在。 主要目的是通过简单的代码或操作向安全研究人员、开发人员…...

Whisper-GPT:混合表征音频大语言模型

Whisper-GPT:混合表征音频大语言模型 当下,利用从神经压缩算法(例如#Encodec#​)派生的离散音频标记的生成式音频、语音以及音乐模型数量激增。然而,这种方法的主要缺陷之一在于对上下文长度的处理。如果必须考虑所有不同频率的音频内容才能进行下一个标记预测,那么高保…...

科技重塑未来:前沿技术趋势、跨领域融合与社会影响深度洞察

目录 科技重塑未来&#xff1a;前沿技术趋势、跨领域融合与社会影响深度洞察引言一、前沿技术趋势洞察与分析1. 人工智能与自动化1.1 趋势分析1.2 挑战分析 2. 区块链技术2.1 趋势分析2.2 挑战分析 3. 量子计算3.1 趋势分析3.2 挑战分析 二、跨领域技术融合与创新实践1. AI与大…...

深度学习:大模型Decoding+MindSpore NLP分布式推理详解

大模型推理流程 1. 用户输入提示词&#xff08;Prompt&#xff09; 假设用户输入为&#xff1a;“从前&#xff0c;有一只小猫&#xff0c;它喜欢……” 我们的目标是让模型生成一段完整的故事。 2. 模型处理用户输入 2.1 分词&#xff1a;输入提示被分词为模型可以理解的…...

GESP6级语法知识(二):动态规划算法(二)

最小路径和; //最小路径和 #include<iostream> using namespace std; const int N100; int dp[N][N],value[N][N]; int n,m; int main() {cin>>n>>m;for(int i1;i<n;i) //录入初始数字矩阵 for(int j1;j<m;j)cin>>value[i][j];for(int i1;i…...

数据结构与算法之递归: LeetCode 79. 单词搜索 (Ts 版)

单词搜索 https://leetcode.cn/problems/word-search/description/ 描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 单词必须按照字母顺序&#xff0c;通过相邻的单…...

智能系统的感知和决策

智能系统在感知和决策过程中具备的关键能力表现在智能感知/自主判定上&#xff0c;下面可以从感知的本质、自主判断的含义及其在智能系统中的作用进行深入分析。 1、智能感知&#xff1a;信息获取与理解 智能感知是指智能系统通过传感器或其他数据采集手段获取环境中的信息&…...

多线程之旅:线程安全问题

之前说到了多线程的创建和一些属性等等&#xff0c;接下来&#xff0c;就来讲讲多线程安全问题。 小编引入这段代码讲解下&#xff1a; public class Demo13 {public static int count0;public static void main(String[] args) throws InterruptedException {Thread t1new…...

用java配合redis 在springboot上实现令牌桶算法

令牌桶算法配合 Redis 在 Java 中的应用令牌桶算法是一种常用的限流算法&#xff0c;适用于控制请求的频率&#xff0c;防止系统过载。结合 Redis 使用可以实现高效的分布式限流。 一.、引入依赖首先&#xff0c;需要在 pom.xml 文件中引入 spring-boot-starter-data-re…...

科学计算库NumPy

NumPy是高性能科学计算和数据分析的基础包。 认识NumPy数据对象 n维数组对象ndarray(array) 数组是编程语言中重要且复杂的数据结构&#xff0c;它是由相同类型元素按照一定的顺序排列的集合。ndarray具有矢量算术能力和复杂的广播能力。 - 维度又称为维数&#xff0c;在数学…...

【大数据】机器学习----------强化学习机器学习阶段尾声

一、强化学习的基本概念 注&#xff1a; 圈图与折线图引用知乎博主斜杠青年 1. 任务与奖赏 任务&#xff1a;强化学习的目标是让智能体&#xff08;agent&#xff09;在一个环境&#xff08;environment&#xff09;中采取一系列行动&#xff08;actions&#xff09;以完成一个…...

Unicode不可见字符

场景复现 在访问 https://dotnet.microsoft.com/zh-cn/apps/aspnet地址时 突然出现 https://dotnet.microsoft.com/zh-cn/apps/aspnet%E2%80%8C%E2%80%8C 但是正常来看&#xff0c;这个地址后面是没有%E2%80%8C%E2%80%8C的&#xff0c;粘贴到idea里发现了url地址后面还拼接了2…...

w172二手车交易系统的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

TRELLIS微软的图生3D

TRELLIS 教程目录&#xff1a; Youtube&#xff1a;https://www.youtube.com/watch?vJqFHZ-dRMhI 官网地址&#xff1a;https://trellis3d.github.io/ GitHub&#xff1a;https://github.com/Microsoft/TRELLIS 部署目录&#xff1a; 克隆项目 git clone --recurse-submodul…...

【力扣:新动计划,编程入门 —— 题解 ①】

向前看&#xff0c;总会有新的故事值得期盼 —— 25.1.21 2235. 两整数相加 给你两个整数 num1 和 num2&#xff0c;返回这两个整数的和。 示例 1&#xff1a; 输入&#xff1a;num1 12, num2 5 输出&#xff1a;17 解释&#xff1a;num1 是 12&#xff0c;num2 是 5 &#x…...

如何使用 Pytest -k 选项轻松筛选测试用例

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 你是否曾不得不从成百上千个测试中费力筛选&#xff0c;只为运行几个特定的测试&am…...

C语言之小型成绩管理系统

&#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 C语言之小型成绩管理系统 目录 设计题目设计目的设计任务描述设计要求输入和输出要求验收要…...

C++ ——— 模拟实现 vector 类

目录 vector 类的框架 无参数的构造函数 析构函数 获取有效数据个数 获取容量 重载 [] 运算符 可读可写版本 只可读版本 扩容 尾插 实现迭代器 可读可写版本 只可读版本 自定义设置size长度和内容 在任意位置插入 删除任意位置的数据 赋值重载 vector 类的框…...

SpringBoot实现轻量级动态定时任务管控及组件化

1关于动态定时任务 关于在SpringBoot中使用定时任务&#xff0c;大部分都是直接使用SpringBoot的Scheduled注解&#xff0c;如下&#xff1a; Component public class TestTask {Scheduled(cron"0/5 * * * * ? ") //每5秒执行一次public void execute(){SimpleDa…...