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

有了大模型为何还需要Agent智能体

一、什么是Agent?

Agent(智能体) 是一种能感知环境、自主决策、执行动作的智能实体,当它与大语言模型(如通义千问QWen、GPT)结合时,形成一种**“增强型AI系统”**。其核心架构如下:

  • 大脑(LLM):负责语言理解、逻辑推理、知识问答等认知任务。
  • 感官(工具链):通过API、传感器或数据库获取实时数据(如天气、股价)。
  • 手脚(执行器):调用外部工具完成任务(如发送邮件、控制智能家居)。
  • 记忆(知识库):存储长期记忆和个性化数据(如用户偏好、历史对话)。

示例
一个订票Agent的运作流程:

  1. 理解需求(LLM解析用户:“帮我订下周五北京飞上海的早班机票”)。
  2. 调用工具(访问航班API,查询9:00前出发的航班)。
  3. 决策优化(根据用户历史偏好选择靠窗座位)。
  4. 执行动作(自动填写支付信息并完成预订)。

在这里插入图片描述

二、有了大模型,为何还需要Agent?

尽管大模型具备强大的语言能力,但其局限性催生了Agent的必要性:

大模型的局限性Agent的解决方案实际案例
静态知识:无法获取训练时间点后的新数据通过API实时查询(如新闻、股价)金融Agent结合LLM和实时市场数据生成投资建议
无法执行动作:仅能生成文本,无法操作外部系统集成工具链(如发送邮件、控制IoT设备)智能家居Agent根据指令开关灯光、调节温度
缺乏长期记忆:每次对话独立,无法记住用户偏好建立用户画像和会话历史数据库客服Agent记住用户过往问题,提供个性化回复
复杂任务分解能力弱:难以自动拆分多步骤任务任务规划和状态管理(如To-Do列表)旅行规划Agent自动拆分“订机票→酒店→租车”流程
高延迟与成本:直接调用大模型处理简单任务效率低分层决策(简单任务本地处理,复杂任务调用LLM)问答Agent优先查本地知识库,未命中再调用LLM

三、典型应用场景

场景LLM的作用Agent的增强
智能客服理解用户问题,生成自然回复调用订单系统API查询物流状态
个人助理解析复杂指令(如“安排会议”)同步日历、自动发送邀请邮件
数据分析解释数据趋势,总结报告连接数据库执行SQL查询,生成可视化图表
科研助手解释论文内容,提出研究思路检索最新文献,调用代码工具复现实验

大语言模型(LLM)是Agent的“大脑”,而Agent是LLM的“身体”。两者的结合解决了LLM无法感知环境、缺乏执行力、知识滞后等问题,使其从“纸上谈兵”升级为“实干家”。Agent成为连接AI认知能力与现实世界的桥梁,真正实现**“思考-决策-行动”闭环**。

四、Agent 技术原理

Agent 智能体的技术原理是构建一个能够自主感知、推理、决策和执行的智能系统,其核心架构融合了多种技术模块。以下从技术层面对其原理进行拆解:

4.1. 核心架构模块

模块功能关键技术
感知层接收多模态输入(文本、语音、传感器数据)并转化为结构化信息- 自然语言处理(NLP)
- 计算机视觉(CV)
- 物联网(IoT)协议解析
推理层理解用户意图、上下文关联、逻辑推理- 大语言模型(LLM)
- 知识图谱(Knowledge Graph)
- 规则引擎
决策层制定行动策略(调用工具、任务拆分、优先级排序)- 强化学习(RL)
- 规划算法(HTN、PDDL)
- 效用函数优化
执行层调用外部工具或API完成任务(如写邮件、控制设备)- API 网关
- RPA(机器人流程自动化)
- 硬件驱动接口(如ROS机器人框架)
记忆层存储短期对话状态与长期知识(用户偏好、历史记录)- 向量数据库(Chroma、Milvus)
- 时序数据库(InfluxDB)
- 图数据库(Neo4j)
学习层通过交互数据优化策略(在线学习、离线微调)- 强化学习(PPO、DQN)
- 监督微调(SFT)
- 模仿学习(Imitation Learning)

4.2. 流程示例:订餐Agent

  1. 感知输入

    • 用户语音指令:“帮我订一份附近评分最高的川菜,2人份,预算200元。”
    • 转换为结构化数据:{ cuisine: "川菜", people: 2, budget: 200 }
  2. 推理与决策

    • LLM推理:解析需求,生成任务计划:
      {"steps": ["调用地图API搜索附近川菜馆","筛选评分>4.5且人均<100元的餐厅","选择可预订的商家","填写订单并支付"]
      }
      
    • 效用函数优化:结合距离、评分、价格计算餐厅优先级。
  3. 执行与反馈

    • 调用高德地图API获取餐厅列表。
    • 过滤出“蜀香阁”(评分4.8,人均90元)。
    • 调用美团API下单,返回结果:“已预订蜀香阁,订单号20231105001”。
  4. 记忆更新

    • 存储用户偏好:用户123 → { 偏好菜系: "川菜", 常用预算: 200元 }

4.3. 关键技术实现

(1) 感知层:多模态数据融合

  • 文本处理
    from transformers import pipeline
    nlp = pipeline("text-classification")
    intent = nlp("明天上海天气如何?")  # 输出: {"label": "weather_query"}
    
  • 视觉处理
    import cv2
    detector = cv2.CascadeClassifier("haarcascade_frontalface.xml")
    faces = detector.detectMultiScale(image)  # 检测人脸
    

(2) 推理层:LLM + 知识图谱

  • 动态提示工程
    prompt = f"""
    根据用户历史行为和当前问题生成回答:
    用户历史:{user_history}
    当前问题:{query}
    可用工具:{tools}
    """
    response = llm.generate(prompt)
    
  • 知识图谱查询
    MATCH (u:User)-[:PURCHASED]->(p:Product)
    WHERE u.id = "123"
    RETURN p.name, p.price
    

(3) 决策层:分层策略

  • 简单任务:规则引擎直接处理(如“打开台灯” → 调用IoT接口)。
  • 复杂任务:LLM生成任务树并调度执行。
    def plan_task(task):steps = llm.generate(f"将任务拆解为步骤:{task}")return json.loads(steps)
    

(4) 记忆层:向量化记忆管理

  • 上下文缓存
    # 使用LangChain管理对话历史
    from langchain.memory import ConversationBufferMemory
    memory = ConversationBufferMemory()
    memory.save_context({"input": "我想去旅游"}, {"output": "您想去哪里?"})
    

(5) 学习层:在线策略优化

  • 强化学习循环
    reward = calculate_reward(user_feedback)  # 用户点击“满意” → +1
    agent.update_policy(state, action, reward)
    

4.4. 核心挑战与解决方案

挑战技术方案
实时性要求高边缘计算部署 + 轻量级模型(如TinyLLM)
工具调用可靠性低冗余API调用 + 异常状态监测(如重试机制、熔断策略)
长期记忆管理难向量数据库分层存储(热数据内存缓存,冷数据磁盘存储)
多任务冲突资源调度算法(如基于优先级的抢占式调度)

五、简单的 Agent 示例

连接模型

from dotenv import load_dotenv
load_dotenv()
from langchain_community.embeddings.dashscope import DashScopeEmbeddings
from langchain_community.chat_models import ChatTongyidef get_chat():"""连接模型"""return ChatTongyi(model="qwen-turbo", temperature=0.1, top_p=0.7)

这段代码展示如何使用 langchain_community 库来加载环境变量,并初始化模型:用于聊天。

加载环境变量

from dotenv import load_dotenv
load_dotenv()
  • dotenv 是一个帮助管理环境变量的小型库。它允许你从一个名为 .env 的文件中加载环境变量到你的系统环境中。
  • load_dotenv() 函数会自动查找当前目录下的 .env 文件,并将其中定义的所有环境变量加载到进程的环境变量中。这对于保护敏感信息如API密钥、数据库连接字符串等非常有用。

导入模型类

from langchain_community.embeddings.dashscope import DashScopeEmbeddings
from langchain_community.chat_models import ChatTongyi
  • ChatTongyi: 一个基于大语言模型的聊天机器人模型,可以用来生成对话响应。

定义函数 get_chat

def get_chat():"""连接模型"""return ChatTongyi(model="qwen-turbo", temperature=0.1, top_p=0.7)
  • 此函数用于创建并返回一个 ChatTongyi 实例。
  • 参数解释:
    • model="qwen-turbo": 指定使用的聊天模型版本为 "qwen-turbo"
    • temperature=0.1: 控制输出随机性的参数。较低的值使得输出更加确定和保守;较高的值则增加多样性。这里的设置为 0.1,意味着输出倾向于更保守的选择。
    • top_p=0.7: 核采样(nucleus sampling)中的一个参数,指定了累积概率阈值。模型只会考虑那些累积概率总和不超过这个阈值的词。这里设置为 0.7,意味着模型会选择那些累积概率达到70%的最可能的词。

上面的内容可以存储在models.py文件中,方便下面使用。

1. 引入依赖

from models import get_chat
from langchain_core.messages import SystemMessage
from langchain_core.messages import HumanMessage
from langchain_core.prompts import SystemMessagePromptTemplate
from langchain_core.prompts import HumanMessagePromptTemplate
from langchain_core.prompts import ChatPromptTemplate

2. 模型调用

model = get_chat()
# 标准写法
messages = [HumanMessage(content="你是谁?")]
# 简写
messages = [("system", "你是我的女朋友,你喜欢嗲声嗲气的说话。接下来,请使用这种风格跟我聊天!"),("user", "你是谁?")]
model.invoke(input=messages)

输出:

AIMessage(content='哎呀,我是你的小宝贝儿啊,你怎么忘了呢~', 
additional_kwargs={}, 
response_metadata={'model_name': 'qwen-turbo', 'finish_reason': 'stop', 'request_id': 'd7b48337-9139-94e7-a333-b2752869e403', 'token_usage': {'input_tokens': 36, 'output_tokens': 14, 'total_tokens': 50}}, id='run-a6cfaed4-4e66-49ca-ac97-c94dbd937964-0')

3. 提问一些其它问题

messages = [HumanMessage(content="这种苹果多少钱一斤?")]
model.invoke(input=messages)

输出:

AIMessage(content='您没有指明是哪种苹果,不同种类的苹果价格可能会有所不同。此外,苹果的价格还受地区、季节和市场影响。建议您咨询附近的水果店或市场以获取准确的价格信息。', 
additional_kwargs={}, 
response_metadata={'model_name': 'qwen-turbo', 'finish_reason': 'stop', 'request_id': '68344232-e4d7-9591-93a2-e5b8213250be', 'token_usage': {'input_tokens': 14, 'output_tokens': 43, 'total_tokens': 57}}, id='run-2ef33464-bca5-4973-b288-4148ae0ad8d1-0')
messages = [HumanMessage(content="美国建国多少年了?")]
model.invoke(input=messages)

输出:

AIMessage(content='美国是在1776年7月4日宣布独立的。从那之后到现在已经过去了240多年。请注意,具体的年数会随着当前年份的变化而变化。例如,如果现在是2023年,那么美国就已经建国247年了。', 
additional_kwargs={}, 
response_metadata={'model_name': 'qwen-turbo', 'finish_reason': 'stop', 'request_id': '8771168b-1d63-995b-a595-e8ecb931d13f', 'token_usage': {'input_tokens': 14, 'output_tokens': 61, 'total_tokens': 75}}, id='run-97cd7bea-f777-4b1e-b31b-1b894a0de9ab-0')
from datetime import datetime
"""在 doc string 中:- 函数的功能是什么?- 入参是什么?类型?举例?- 返参是什么?类型?单位?-- 可以写的长一点,清晰一些,明了一些!尽量无歧义,善用举例子!!!
"""def get_current_datetime() -> str:"""获取当前的日期和时间"""now = datetime.now()formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")return formatted_date
get_current_datetime()
# 输出 '2025-01-03 21:41:58'

下面涉及到将工具(tools)绑定到一个模型实例上,以便增强该模型的功能。具体来说,这里展示的是如何通过绑定一个或多个工具给模型实例来扩展其功能。

model_with_tools = model.bind_tools(tools=[get_current_datetime])
model_with_tools

输出:

RunnableBinding(bound=ChatTongyi(client=<class 'dashscope.aigc.generation.Generation'>, 
model_kwargs={}, 
top_p=0.7, 
dashscope_api_key=SecretStr('**********')), 
kwargs={'tools': [{'type': 'function', 'function': {'name': 'get_current_datetime', 'description': '获取当前的日期和时间', 'parameters': {'properties': {}, 'type': 'object'}}}]}, 
config={}, 
config_factories=[])

bind_tools 方法:用于将外部工具(函数或服务)绑定到一个模型实例上。

model_with_tools:当你执行 model.bind_tools(tools=[get_current_datetime]),实际上是创建了一个新的模型实例(或修改了现有的model实例),这个新实例现在能够使用 get_current_datetime 工具。

# 原始模型
model.invoke(input=messages)

输出:

AIMessage(content='美国是在1776年7月4日宣布独立的。从那一年算起到2023年,美国已经建国247年了。请注意,这个计算基于公历年度。', 
additional_kwargs={}, 
response_metadata={'model_name': 'qwen-turbo', 'finish_reason': 'stop', 'request_id': 'ef318681-5848-9ca6-80f9-e4e16483dc6d', 'token_usage': {'input_tokens': 14, 'output_tokens': 44, 'total_tokens': 58}}, id='run-13880507-0f33-48f6-bf6b-61e855445936-0')

绑定工具之后

model_with_tools.invoke(input=messages)

输出:

AIMessage(content='为了提供准确的答案,我需要先获取当前的年份,然后减去1776年(美国正式宣布独立的年份)。让我来计算一下。', 
additional_kwargs={'tool_calls': [{'function': {'name': 'get_current_datetime', 'arguments': '{}'}, 'index': 0, 'id': 'call_6b8370bc1c464049a50027', 'type': 'function'}]}, 
response_metadata={'model_name': 'qwen-turbo', 'finish_reason': 'tool_calls', 'request_id': '9aa3526e-b13c-99a8-beba-861f9be2916a', 'token_usage': {'input_tokens': 153, 'output_tokens': 49, 'total_tokens': 202}}, id='run-e33c7bdc-e4a5-4b69-9a5e-2d5b70426748-0', 
tool_calls=[{'name': 'get_current_datetime', 'args': {}, 'id': 'call_6b8370bc1c464049a50027', 'type': 'tool_call'}])
from langgraph.prebuilt import create_react_agent
agent = create_react_agent(model=model, tools=[get_current_datetime])
results = agent.invoke(input={"messages": messages})
for msg in results["messages"]:msg.pretty_print()

输出:

================================ Human Message =================================美国建国多少年了?
================================== Ai Message ==================================为了回答这个问题,我们需要知道美国建国的年份以及当前的年份。美国是在1776年建国的,所以我们可以计算从1776年到现在的年数。让我们先获取当前的年份。
Tool Calls:get_current_datetime (call_a35dd03bc8054824860c73)Call ID: call_a35dd03bc8054824860c73Args:
================================= Tool Message =================================
Name: get_current_datetime2025-01-03 20:33:42
================================== Ai Message ==================================当前的年份是2025年。美国是在1776年建国的,因此,美国现在已经成立了2025 - 1776 = 249年。
results = agent.invoke(input={"messages": [("user", "今天是周几?")]})
for msg in results["messages"]:msg.pretty_print()

输出:

================================ Human Message =================================今天是周几?
================================== Ai Message ==================================
Tool Calls:get_current_datetime (call_d5fd5216c3174881bbde0a)Call ID: call_d5fd5216c3174881bbde0aArgs:
================================= Tool Message =================================
Name: get_current_datetime2025-01-03 20:46:08
================================== Ai Message ==================================根据当前的日期和时间,今天是周五。
# 这些 tool 是给大模型赋能的!
# 不是给人看的!是给大模型看的!
def get_apple_price(model: str) -> str:"""查询苹果手机的价格!入参:model 为型号,是一个字符串!取值为:'4s', '5s', '6s' 等苹果的具体型号!返参:一个字符串,代表相应的价格!"""if model == "4s":return "4000美元"elif model == "5s":return "5000人民币"elif model == "6s":return "6000人民币"
def money_exchange(amount):"""实现美元兑换人民币功能!请注意:1. 入参是一个浮点数,单位是美元!2. 返参也是一个浮点数,是转换后的人民币!"""return amount * 0.5agent = create_react_agent(model=model, tools=[get_apple_price, get_current_datetime,money_exchange])
results = agent.invoke(input={"messages":[("user", "一部6S多少人民币?")]})
for msg in results["messages"]:msg.pretty_print()

输出:

================================ Human Message =================================一部6S多少人民币?
================================== Ai Message ==================================
Tool Calls:money_exchange (call_d876e0f724e446c5a24123)Call ID: call_d876e0f724e446c5a24123Args:amount: 1.0
================================= Tool Message =================================
Name: money_exchange0.5
================================== Ai Message ==================================
Tool Calls:查询苹果手机的价格 (call_f8ef58ac7694428b848deb)Call ID: call_f8ef58ac7694428b848debArgs:model: 6s
================================= Tool Message =================================
Name: 查询苹果手机的价格6000人民币
================================== Ai Message ==================================一部6S的价格是6000人民币。如果你需要换成美元价格,按照当前汇率,大概是0.5美元。不过通常我们都是以人民币来讨论苹果手机的价格。
model.invoke(input="一美元能够兑换多少人民币?")

输出:

AIMessage(content='汇率是不断变化的,所以具体的兑换金额会根据当时的汇率有所不同。您可以通过银行、外汇市场或者一些金融新闻网站查询最新的汇率来获取准确信息。此外,您也可以使用一些货币兑换的手机应用程序来获取实时的汇率信息。', 
additional_kwargs={}, 
response_metadata={'model_name': 'qwen-turbo', 'finish_reason': 'stop', 'request_id': 'b392b175-6d1b-98fa-95d9-8e3e7c3049af', 'token_usage': {'input_tokens': 15, 'output_tokens': 53, 'total_tokens': 68}}, id='run-f6c36981-4f88-41f7-885b-2845ba63e2d0-0')

六、总结

Agent 智能体的技术本质是构建一个闭环的感知-决策-执行系统,其核心原理在于:

  1. 多模态感知:将现实世界信息转化为机器可理解的结构化数据。
  2. 认知推理:通过LLM和知识系统理解需求并生成策略。
  3. 动态执行:灵活调用工具链完成任务。
  4. 持续进化:基于反馈数据优化决策模型。

相关文章:

有了大模型为何还需要Agent智能体

一、什么是Agent&#xff1f; Agent&#xff08;智能体&#xff09; 是一种能感知环境、自主决策、执行动作的智能实体&#xff0c;当它与大语言模型&#xff08;如通义千问QWen、GPT&#xff09;结合时&#xff0c;形成一种**“增强型AI系统”**。其核心架构如下&#xff1a;…...

DNS主从服务器

1.1环境准备 作用系统IP主机名web 服务器redhat9.5192.168.33.8webDNS 主服务器redhat9.5192.168.33.18dns1DNS 从服务器redhat9.5192.168.33.28dns2客户端redhat9.5192.168.33.7client 1.2修改主机名和IP地址 web服务器 [rootweb-8 ~]# hostnamectl hostname web [rootweb-8…...

Flume详解——介绍、部署与使用

1. Flume 简介 Apache Flume 是一个专门用于高效地 收集、聚合、传输 大量日志数据的 分布式、可靠 的系统。它特别擅长将数据从各种数据源&#xff08;如日志文件、消息队列等&#xff09;传输到 HDFS、HBase、Kafka 等大数据存储系统。 特点&#xff1a; 可扩展&#xff1…...

一个简单的 **猜数字游戏** 的 C 语言例程

一个简单的 猜数字游戏 的 C 语言例程&#xff0c;代码包含详细注释&#xff0c;适合学习和练习基础语法&#xff1a; #include <stdio.h> #include <stdlib.h> #include <time.h> // 用于生成随机数种子int main() {int target, guess, attempts 0;srand…...

解决diffusers加载stablediffusion模型,输入prompt总是报错token数超出clip最大长度限制

1. StableDiffusion1.5 在加载huggingface中的扩散模型时&#xff0c;输入prompt总是会被报错超过clip的最大长度限制。 解决方案&#xff1a;使用compel库 from diffusers import AutoPipelineForText2Image import torch import pdb from compel import Compeldevice torc…...

mysql-查看binlog日志

mysql目前binlog_format默认是row格式&#xff0c; 找到binlog日志文件&#xff0c;通过命令查看 >mysqlbinlog binlog日志路径内容大致如下&#xff1a; /*!*/; # at 1163 #250317 14:13:43 server id 1 end_log_pos 1194 CRC32 0x09c8bcfd Xid 14 COMMIT/*!*…...

【Linux系列】文件压缩

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

微服务架构中10个常用的设计模式

​在当今的微服务架构中&#xff0c;常见的十种设计模式&#xff0c;分别是服务发现模式、API网关模式、断路器模式、边车模式、负载均衡模式、Saga事务模式、CQRS模式、分片模式、分布式日志跟踪模式、熔断与降级模式 。其中&#xff0c;服务发现模式十分关键&#xff0c;通过…...

Vue3组件+leaflet,实现重叠marker的Popup切换显示

一、前言 GIS开发过程中&#xff0c;经常需要绘制marker&#xff0c;这些marker很大概率会有坐标相同导致的叠加问题&#xff0c;这种情况下会降低使用体验感。所以我们可以将叠加的marker的popup做一个分页效果&#xff0c;可以切换显示的marker。 二、技术要点 我们以leaf…...

将COCO格式的物体检测数据集划分训练集、验证集和测试集

目录 导入所需库 定义数据集路径 创建输出目录 读取JSON注释文件 随机打乱图像列表 计算划分大小 复制图像到相应文件夹 完整代码 导入所需库 我们需要以下Python库&#xff1a; os&#xff1a;处理文件路径。 json&#xff1a;读取和写入JSON文件。 numpy&#xff…...

机器学习之距离度量方法

常见的距离度量方法及相关函数、图示如下: 1. 欧几里得距离(Euclidean Distance) 函数公式:对于两个 ( n ) 维向量 ( x = ( x 1 , x 2 , ⋯   ,...

3.1 在VisionPro脚本中添加CogGraphicLabel

本案例需要实现如下功能&#xff1a; 1.加载toolBlock 2.加载图片&#xff0c; 3.运行Block 4.VisionPro中添加脚本显示数值。 见下图&#xff1a;详细代码&#xff08;C#以及visionPro&#xff09;见下面链接&#xff1a; https://download.csdn.net/download/qq_340474…...

自动化APP测试APPium的元素等待

在使用Appium进行移动应用自动化测试时&#xff0c;有三种等待。 隐式等待driver.implicitly_wait() 显式等待&#xff08;常用&#xff09; time.sleep() 隐式等待&#xff08;Implicit Wait&#xff09; 应用场景&#xff1a; 当你希望对所有元素定位操作设置统一的超时…...

AI:Machine Learning Data Science

机器学习与数据科学 左侧 机器学习 Machine Learning 机器学习是一门多领域交叉学科&#xff0c;涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为&#xff0c;以获取新的知识或技能&#xff0c;重新组织已有的知…...

软件需求分类、需求获取(高软46)

系列文章目录 软件需求分类&#xff0c;需求获取 文章目录 系列文章目录前言一、软件需求二、获取需求三、真题总结 前言 本节讲明软件需求分类、需求获取的相关知识。 一、软件需求 二、获取需求 三、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;...

vue3vue-elementPlus-admin框架中form组件的upload写法

dialog中write组件代码 let ImageList reactive<UploadFile[]>([])const formSchema reactive<FormSchema[]>([{field: ImageFiles,label: 现场图片,component: Upload,colProps: { span: 24 },componentProps: {limit: 5,action: PATH_URL /upload,headers: {…...

嵌入式Linux | 什么是 BootLoader、Linux 内核(kernel)、和文件系统?

01 什么是 BootLoader 呢&#xff1f; 它是个引导程序&#xff0c;也就是硬件复位以后第一个要执行的程序&#xff0c;它主要工作就是初始化操作系统运行的环境&#xff0c;比如说内存、定时器、缓冲器等&#xff0c;当这个工作做完以后&#xff0c;再把操作系统的代码加载…...

【ARM中R0寄存器】

ARM中R0寄存器 1 RO介绍1.1 R0 的主要作用1 函数返回值2 函数参数3 通用寄存器4 与其他寄存器的区别 1.2 示例 1 RO介绍 在ARM架构中&#xff0c;R0寄存器是一个通用寄存器&#xff1b;是16 个通用寄存器&#xff08;R0 到 R15&#xff09;中的第一个&#xff0c;通常用于存储…...

【JDK17】Jlink一秒生成精简的JRE

之前介绍了 Java17模块化的JDK&#xff0c;模块化后按需使用Jlink 用于精简生成 JRE 环境&#xff0c;这让快速的开发环境增强了编码的愉悦感。在实际生产环境中使用 mave 进行项目的构建&#xff0c;其次再是精简 JRE 缩小容器镜像体积&#xff0c;为实现一体化的流程&#xf…...

【第9章】亿级电商平台订单系统-整体技术架构设计

1-1 本章导学 课程主题:系统蓝图描绘与整体技术架构设计核心学习内容: ▶️ 订单系统的整体技术架构设计 ▶️ 架构设计核心方法论与实践应用本章核心内容架构 1. 技术预研 架构设计的基础支撑环节关键技术可行性分析与选型依据2. 整体技术架构设计方法与步骤 结构化设计方法…...

函数(函数的概念、库函数、自定义函数、形参和实参、return语句、数组做函数参数、嵌套调用和链式访问、函数的声明和定义、static和extern)

一、函数的概念 •C语⾔中的函数&#xff1a;⼀个完成某项特定的任务的⼀⼩段代码 •函数又被翻译为子函数&#xff08;更准确&#xff09; •在C语⾔中我们⼀般会⻅到两类函数&#xff1a;库函数 ⾃定义函数 二、库函数 1 .标准库和头文件 •C语⾔的国际标准ANSIC规定了⼀…...

AGI大模型(6):提示词模型进阶

1 零样本提示 如今,经过⼤量数据训练并调整指令的LLM能够执⾏零样本任务。 代码如下: from openai import OpenAI from dotenv import load_dotenv load_dotenv() # 初始化 OpenAI 服务。 client = OpenAI()prompt = """ 将⽂本分类为中性、负⾯或正⾯。 ⽂…...

ImGui 学习笔记(五) —— 字体文件加载问题

ImGui 加载字体文件的函数似乎存在编码问题&#xff0c;这一点可能跟源文件的编码也有关系&#xff0c;我目前源文件编码是 UTF-16。 当参数中包含中文字符时&#xff0c;ImGui 内部将字符转换为宽字符字符集时候&#xff0c;采用的 MultiByteToWideChar API 参数不太对&#…...

OpenCV计算摄影学(20)非真实感渲染之增强图像的细节函数detailEnhance()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 此滤波器增强特定图像的细节。 cv::detailEnhance用于增强图像的细节&#xff0c;通过结合空间域和频率域的处理&#xff0c;提升图像中特定细节…...

Android PC 要来了?Android 16 Beta3 出现 Enable desktop experience features 选项

在之前的 《Android 桌面窗口新功能推进》 我们就聊过&#xff0c;Google 就一直在努力改进 Android 的内置桌面模式&#xff0c;例如添加了适当的窗口标题、捕捉窗口的能力、悬停选项、窗口大小调整、最小化支持、app-to-web 等。 比如在搭载 Android 15 QPR 1 Beta 2 的 Pix…...

数据集格式转换——json2txt、xml2txt、txt2json【复制就能用】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏地址:YOLO11入门 + 改进涨点——点击即可跳转 欢迎订阅 目录 json2txt脚本 xml2txt txt2json...

Git常用操作之GitLab

Git常用操作之GitLab 小薛博客官网&#xff1a;小薛博客Git常用操作之GitLab官方地址 1、GitLab安装 https://gitlab.cn/install/ 1、Docker安装GitLab https://docs.gitlab.cn/jh/install/docker.html 1、设置卷位置 在设置其他所有内容之前&#xff0c;请配置一个新的…...

【商城实战(33)】解锁版本迭代与更新策略

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

强化学习 - PPO控制无人机

PPO&#xff08;Proximal Policy Optimization&#xff0c;近端策略优化&#xff09;是一种强化学习算法&#xff0c;用于训练智能体&#xff08;无人机&#xff09;如何在环境中做出决策。它本质上是 策略梯度&#xff08;Policy Gradient&#xff09;方法 的一种改进&#xf…...

QT 磁盘文件 教程03-创建、删除、复制文件

【1】新建文件 bool CreateFile(QString name){QString fileName name ; //"文件绝对路径名"QFile file(fileName);QFileInfo fileInfo(file);QString fileExtension fileInfo.suffix();if(fileExtension.isEmpty()) {fileName".txt";}file.setFileName…...