自学AI Agent心路|专科跨专业转行,我的真实学习入坑历程

前置说明: 本人不是大牛工程师,也不是卖课营销号,所有内容仅为个人自学心得,纯学习分享,仅供大家参考。

宇宙级免责声明: 本人专科非计算机专业出身,工作一年后从零自学C语言,后续主攻Python后端与爬虫方向。靠着一年的业余深耕,拿到了和本科竞争者同台面试、上岗的机会,成功入职2.5线互联网公司完成跨专业转行。

本篇笔记纯粹是个人学习复盘,无营销、无引流,内容如果有认知偏差或技术错误,欢迎各位大佬指正交流!Salute!

下面聊聊我为什么突然入坑 RAG + AI Agent

之前我接过不少AI应用开发的外包项目,但全程都只是简单调用现成的AI API。做多了之后其实感触很深:套壳调用的项目同质化严重、玩法单一,完全没有技术深度,做不出成就感

加上最近频繁刷到各类博主分享的Agent、Codex、OpenClaw等智能体相关内容,好奇心直接拉满,特别想深挖一下底层逻辑,不再只做"调包侠"。

最开始我的想法特别天真:想尝试自己全参数大模型训练

后来才发现完全是天方夜谭------不是技术学不会,是硬件和钱包不允许😂。直接劝退全套训大模型的想法。

退而求其次,我打算先从LoRA微调入手入门。结果又遇到新问题:我主力机是7650GRE,A卡跑LoRA依赖ROCm,而ROCm又必须依托Linux环境。

摆在面前的只有两条路:要么搭虚拟机凑活,要么装双系统。但刚好赶上AI热潮带动硬件、硬盘涨价,折腾成本和时间成本都很高。

本着"来都来了,不能空手而归"的心态,我放弃了硬啃高成本的训练微调路线。在同事、朋友和AI的辅助参考下,我选择了门槛更低、落地性更强、普通人也能上手的方向:系统学习 RAG 知识库 + AI Agent 智能体,正式开启我的AI进阶学习之路。

简单聊聊我现阶段自学下来,对这两个技术的通俗理解(纯小白视角):

关于RAG:其实原理很好理解,哪怕是我之前的外包老板,非技术出身都在自己学着搭建RAG知识库。核心就是让大模型绑定专属私有数据、告别一本正经的胡说八道,属于目前落地最成熟、最实用的AI技术之一,这里就不多废话细讲了。

重点说我最好奇的 AI Agent

没入门之前,我和绝大多数人一样,产生过离谱误区:总觉得Agent是不是意味着AI觉醒了自我意识、可以自主思考自主学习了?

问了行业前辈之后,一句话直接给我讲透了:通俗来说,基础Agent就是给AI套了一层循环逻辑。当然,成熟的高阶Agent远不止简单循环,还包含工具调用、规划、反思、记忆等完整逻辑。

再说到去年很火的 OpenClaw桌面智能体 ,请教前辈后让我瞬间通透:它的核心逻辑,和我之前写过的pyautoGUI自动化项目高度相似。本质就是让大模型拥有工具使用能力,把判断、决策、规划的权力交给LLM,让AI自主操控电脑、完成各类桌面操作和任务流程。

OK,让我们开始吧,下面展示本次学习成果!

首先说明一下我的一些基础参数: 模型:Qwen2.5(安全对齐消融) 7B模型 部署工具:Ollama(后继想脱离Ollama) 工具开发语言:Python

先看成果:

本次完成了,AI调用获取时间函数、读取文件、创建文件功能。 下面来说说我的原理理解: 首先是基础配置:

import Ollama 进行库的导入

ollama.chat接口调用及参数:

model:为调用的模型名字 (必填)

messages:是给到AI的聊天记录,同时也是给到AI用户的回答 (必填)

tools:定义给AI调用的工具以及工具怎么调用需要哪些参数 (选填)

options:是给到AI的参数设置(选填)

messages.content:返回AI回复内容

基础调用(例):

注意:其中messages字典里面的"role"字段代表聊天记录中角色的定义,"content"代表聊天内容,保存方式:一个字典代表一句话,保存一句话有两个必填参数就是角色和聊天内容。user代表用户,assistant代表AI,tool代表工具

ini 复制代码
A = ollama.chat(
    model = "AI模型名字",
    messages = [{"role":"user","content":"用户的输入"},{"role":"assistant","content":"AI的回复"},{"role":"tool","content":"工具返回的数据"}],
    options = {"temperature": 0.3}
)
return A.messages.content #AI返回回复内容

以上即可完成AI基本调用

tools工具篇:

思路导入:首先要知道AI不是自己可以完成很多事,LLM语言大模型只负责思考(大脑),完成电脑上的操作需要外部工具(手脚)完成,所有本篇会讲怎么让AI自己去使用工具(包含自己写的程序)。

ollama.chat接口调用及参数中讲到了,tools参数是定义给AI调用的工具以及工具怎么调用需要哪些参数的参数,那么我先把这个参数拆开来:

ini 复制代码
tools = [
    {"type":"function","function":{
        "name":"工具的函数名字",
        "description":"获取当前系统的日期和时间,当用户询问现在几点、当前日期时调用这个函数",
        "parameters":{
                        "type":"object",
                        "properties":{},
                        "required":[] }
        }
    }
]

第一层字典:type:function声明这个工具的类型是【函数调用工具】

第二层字典:"function":{},把这个函数的全部信息打包放进这个子字典里(名字、描述、参数)。

"type":"object"是告诉AI我们要返回的数据格式,object也就是字典JSON格式。

第三层字典:parameters:{},是函数的参数说明书,写给 AI 看的,AI 读完就知道调用这个函数需要传什么数据。

tools第二部分:判断AI是否需要调用工具以及AI想调用什么工具

tool_calls中会返回AI想要调用的工具列表,然后使用function.name获取到工具的名字再根据名字进行Python工具程序调用,最后把工具返回的数据json化再塞回AI的聊天内容中。

例:

ini 复制代码
if response.messages.tool_calls:
    tool_calls = response.messages.tool_calls[0] #获取AI要调用的工具列表的第一位
    func = tool_calls.function.name # 获取工具名字
    if func == "函数名":
        A = 函数名()#如果是的话就执行函数调用
        prompt.append({"role":"tool","content":A})
        B = ollama.chat(prompt)
        return B.messages.content

下面开始展示带参版本tools: 带参版要从tools中多加几个参数,上代码:

json 复制代码
{
                        "type":"function",
                        "function":{
                            "name":"get_file",
                            "description":"读取用户给出的指定文件,当用户给出文件名,例如:测试.txt,就调用这个函数",
                            "parameters":{
                                            "type":"object",
                                            "properties":{
                                                "FileName":{
                                                "type":"string",
                                                "description":"要读取的文件名称,例如 测试.txt"
                                            }
                                            },
                                            "required":["FileName"]
                                        }
                        }
                    },
                    {
                        "type":"function",
                        "function":{
                            "name":"new_file",
                            "description":"当用户要求生成文章或生成代码文件时,调用这个函数",
                            "parameters":{
                                "type":"object",
                                "properties":{
                                    "FileName":{
                                        "type":"string",
                                        "description":"生成文件的文件名,例如 文章.txt,Main.py"
                                    },
                                    "text":{
                                        "type":"string",
                                        "description":"正文内容,代码内容"
                                    }
                                },
                                "required":["FileName","text"]
                            }
                        }
                    },

主要就是在parameters字典中加入对参数的解释(给AI看的),函数名:FileName中包含type告诉AI类型是string字符串,description解释这个参数应该填什么。

OK,那么今天的学习笔记分享到此结束了,下一次分享不知道是什么时侯,哈哈哈,本人比较笨,得等本人吃透后才敢给大家分享嘿嘿嘿。

最后送一句话给努力学习的同学们: 技术不辜负笨功夫,出身和学历只是起点,持续学习、稳步前行,就是普通人最好的逆袭。祝愿每一个努力提升自己的人,皆有所得、皆有所成!

相关推荐
柳成荫~4 小时前
VisionMind Agent 图像标注
agent·自动标注
许我半盏清茶4 小时前
Agent一大痛点:上下文空间不够了怎么办?
agent
weixin_435208164 小时前
pi agent 扩展与 hook 机制浅析
人工智能·agent
是Guava不是瓜娃5 小时前
开源 AI Agent 中台 AgentOne(灵一)---私有部署、数据不出域的企业级 AI 助手
ai·agent·ai agent·skill·agentscope·agent 中台
Flynt6 小时前
Astra 自主跑了 35 小时烧掉 40 亿 token,产出为零:我给 Agent 加了三道闸
python·aigc·agent
山间小僧12 小时前
「AI学习笔记」Agent Memory(二)跨会话记忆:从聊天记录到可演化的长期记忆
aigc·agent·vibecoding
dong_junshuai19 小时前
每天一个开源项目#99 OpenResearch:2.2K星的本地研究Agent工作台
开源·github·agent
花椒技术19 小时前
把 AI 视频接进直播:提前生成、按次生成、持续生成怎么选?
agent·音视频开发
用户80825986668719 小时前
用 LangGraph 重写自己手写的 Agent:框架替你解决了什么,什么它不管
agent