【Agent学习】Day13

五一收假啦,继续开始我的博客,在五一期间参加了一个Agent相关的比赛,在这个过程中学习了很多也认识到了自己的不足,还是要继续努力呀,希望在5月底可以自己设计一个agnt的项目。。

今天学习通用AI Agent的核心组件和数据流。

1 环境感知与状态表示

环境感知的核心任务是将原始数据转化为结构化状态表示,目标是解决以下问题:

  1. 多模态异构数据对齐:文本、图像和传感器数据的时空一致性(如自动驾驶中摄像头与LiDAR数据融合)
  2. 动态环境建模:实时捕捉环境变化
  3. 噪声过滤:剔除无效或干扰信息

状态表示的设计原则:

  1. 表达能力与紧凑性平衡:状态表示应该既能充分反映环境的细节,又保持适度的紧凑性以利于后续计算。常用的方法包括向量化表示、图结构以及语义嵌入等
  2. 动态更新与时间一致性:在实时环境下,状态必须具备动态更新能力,同时确保历史状态与当前状态之间的时序关联,为任务规划提供连续性依据
  3. 鲁棒性与容错性:由于外界干扰与传感器误差不可避免,状态表示设计中需要引入冗余机制与误差校正技术,确保系统能在部分数据缺失或错误的情况下依然作出合理判断

2 代码学习-环境感知与状态表示

下面以一个简单的自动驾驶场景为例子,演示通用AI Agent的环境感知与状态表示。在这个场景中,Agent需要通过摄像头获取道路图像,进行预处理和特征提取,最终将环境状态表示为一个特征向量。

复制代码
import cv2
import numpy as np

class EnvironmentPerception:
    def __init__(self):
        #首先初始化摄像头
        self.cap = cv2.VideoCapture(0)#使用默认摄像头,可以根据需要修改为视频文件路径

    def get_environment_data(self):
        #获取环境数据(摄像头图像)
        ret, frame = self.cap.read()
        if not ret:
            raise Exception("无法获取环境数据")
        return frame

    def preprocess_data(self, image):
        #图像预处理
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)#转为灰度图像
        blurred = cv2.GaussianBlur(gray, (5, 5), 0)#高斯模糊
        edges = cv2.Canny(blurred, 50, 150)#边缘检测
        return gray,blurred,edges

    def extract_features(self, processed_image):
        #特征提取
        height, width = processed_image.shape
        features_vector = np.zeros(width)#创建一个宽度长度的特征向量

        for x in range(width):
            features_vector[x] = np.sum(processed_image[:, x])/height #取每列边缘像素的平均值

        return features_vector

    def perceive_environment(self):
        #环境感知流程
        try:
            image = self.get_environment_data()
            gray,blurred,processed_image = self.preprocess_data(image)
            #保存图片
            cv2.imwrite("0.jpg", image)  # 原始摄像头画面
            cv2.imwrite("1.jpg", gray)  # 灰度图
            cv2.imwrite("2.jpg", processed_image)  # 最终边缘图
            print("图片已保存:0.jpg、1.jpg、2.jpg")

            state_representation = self.extract_features(processed_image)
            return state_representation
        except Exception as e:
            print(f"环境感知出错:{e}")
            return None

    def release(self):
        #释放摄像头资源
        self.cap.release()

if __name__ == '__main__':
    agent = EnvironmentPerception()
    state = agent.perceive_environment()
    if state is not None:
        print("环境状态表示(特征向量):",state)
    agent.release()

运行结果如下:

3 任务规划与动作序列生成

任务规划的目标定义与约束识别:系统需要明确任务目标和环境约束,目标可以是短期内的局部目标也可以是长期全局战略

搜索与优化:在明确目标后,系统采用启发式搜索、动态规划或强化学习等方法,在状态空间中寻找达到目标的最优路径

层次化规划:采用分层测量,将整体任务分解为若干子任务,高层规划负责策略决策,低层则专注与具体动作执行

4 数据流优化策略

在通用AI Agent的运行过程中,环境感知、任务规划和动作执行等环节会产生大量的数据,如何高效处理这些数据是关键。数据压缩技术可以对感知数据进行压缩,减少存储和传输负担。常用的数据流优化策略如下:

数据压缩与预处理:在数据进行主处理流程前进行压缩、格式转换或聚合处理以降低数据量和计算复杂度

异步与并行处理:采用消息队列、事件驱动等异步通信机制,解耦各个模块间的依赖,同时利用多线程或分布式计算提高数据处理速度

实时监控与反馈调节:通过监控工具实时跟踪数据流状态,及时发现并处理异常情况;基于反馈信息,动态调整数据流路径和处理策略,实现自适应优化

5 代码学习-数据流优化策略

在通用AI Agent中实现数据流优化策略:

复制代码
import cv2
import numpy as np
from sklearn.decomposition import PCA
from collections import deque
import time
import concurrent.futures

class DataFlowOptimization:
    def __init__(self):
        #首先初始化摄像头
        self.cap = cv2.VideoCapture(0)
        #PCA降维参数
        self.pca = PCA(n_components=0.95)#保留95%的方差
        #数据缓存
        self.cache = deque(maxlen=100)#缓冲最多10帧数据
        #并行处理线程池
        self.executor = concurrent.futures.ThreadPoolExecutor(max_workers=4)#最多同时处理4个线程
    def get_environment_data(self):
        #获取环境数据(摄像头图像)
        ret, frame = self.cap.read()
        if not ret:
            raise Exception("无法获取环境数据")
        return frame

    def preprocess_data(self, image):
        #图像预处理
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)#转为灰度图像
        blurred = cv2.GaussianBlur(gray, (5, 5), 0)#高斯模糊
        edges = cv2.Canny(blurred, 50, 150)#边缘检测
        return edges

    def compress_data(self, data):
        #数据压缩(使用PCA降维)
        data_flat = data.reshape(-1,data.shape[1])#展平图像
        if len(self.cache)==0:
            #首次使用PCA的时候需要先拟合数据
            self.pca.fit(data_flat)
        compressed_data = self.pca.transform(data_flat)
        return compressed_data

    def cache_data(self,data):
        #数据缓存
        self.cache.append(data)

    def process_data_parallel(self,data):
        #模拟其他线程耗时处理任务
        time.sleep(0.1)
        return data

    def optimize_data_flow(self):
        #数据流优化流程
        try:
            image = self.get_environment_data()
            processed_image = self.preprocess_data(image)
            compressed_data = self.compress_data(processed_image)
            self.cache_data(compressed_data)
            #使用线程池进行并行处理
            futures = []
            for data in self.cache:
                futures.append(self.executor.submit(self.process_data_parallel,data))
            concurrent.futures.wait(futures)
            return compressed_data
        except Exception as e:
            print(f"数据流优化出错:{e}")
            return None

    def release(self):
        #释放摄像头资源和线程池
        self.cap.release()
        self.executor.shutdown()


if __name__ == '__main__':
    agent = DataFlowOptimization()
    optimized_data = agent.optimize_data_flow()
    if optimized_data is not None:
        print("优化后的数据维度:",optimized_data.shape)
    agent.release()

运行结果:

今天的Agent学习先到这里啦~

相关推荐
峥嵘life1 小时前
2026 五一赣州两日游记录:宋城夜色入梦,七鲤古意寻踪
学习
~光~~1 小时前
【AI工具使用配置记录】claude本地安装和使用
学习
LuminousCPP1 小时前
C 语言动态内存管理全解析:从基础函数到柔性数组与内存分区
c语言·经验分享·笔记·学习·柔性数组
qq_571099352 小时前
学习周报四十四
学习
d111111111d2 小时前
MQTT+STM32+ESP8266网络程序分层+韦老师
笔记·stm32·单片机·嵌入式硬件·学习·php
小宋加油啊2 小时前
学习CBOR
学习
王钧石的技术博客2 小时前
Harness Engineering学习
人工智能·学习·agent
babe小鑫2 小时前
计算机专业学习数据分析的价值
学习·数据挖掘·数据分析
奔跑的Ma~2 小时前
第三篇:Coze Skill核心模块详解——解锁个性化配置,提升Skill实用性
人工智能·学习·ai编程·skill·扣子