我的第一个AI Agent项目开发经历

更新日期: 2025-12-18 阅读: 81 标签: AI

我花了好几个月时间做了一个AI Agent项目。最开始想用现成的开源框架,后来决定完全自己开发。整个过程没有太多痛苦,但心里总是不踏实。担心程序上线后会出问题,也担心自己很多地方没想明白。


项目是做什么的?

这个系统主要完成四件事情:

  1. 把各种内容收集到知识库里

  2. 用户提问或者提供关键词

  3. 根据用户问题,在知识库里搜索相关内容

  4. 用大模型对搜索到的内容进行总结

做完后我有个感觉:好像很多类似项目都可以按这个思路来做。只要换个知识库、调整一下提示词和业务规则就行了。不知道这是不是我的错觉。


需要准备哪些东西?

下面是我用到的工具技术

  1. Python 3.12 + Fastapi:用来开发Web接口

  2. MySQL:存储用户信息、配置数据这些元数据

  3. OpenSearch(或者Elasticsearch):两个都行,协议有点区别。主要用来存向量和做搜索

  4. 大模型服务:我试了Qwen和DeepSeek,可以自己部署也可以用云服务

  5. Ollama:部署本地向量模型bge-m3和对话模型qwen3

这里遇到几个小问题:

第一个问题:Ollama的向量模型使用方法。bge-m3是向量模型,不需要像对话模型那样启动。下载后可以用这个命令测试:

curl http://127.0.0.1:1080/api/embed -d '{"model": "bge-m3:567m", "input": ["hello world"]}'

如果看到1024维的向量输出,就说明正常了。用CPU跑会比较慢,而且会占满CPU。

第二个问题:DeepSeek模型的JSON输出。用DeepSeek-R1模型时,JSON格式化输出不太好控制。可能是我的提示词写得不好。DeepSeek-V3和Qwen3这方面就好很多。

第三个问题:FastAPI的同步异步混用。如果用异步接口调用了同步方法,整个服务可能会卡住。这是我的技术问题,对Python和FastAPI还不够熟悉。


系统是怎么设计的?

我参考了RAGflow的源码,觉得自己设计的架构太简单了。不过反过来想,简单可能出错的概率也小一些。

整个系统分三层:

数据服务层

负责处理数据:清洗、结构化、转成向量,然后存起来。

存储层

这里有几个重要组件:

  • Redis:存那些需要快速读取的频繁访问数据

  • MySQL:存用户、登录记录这些基础信息

  • OpenSearch:知识库的主要存储,存文本和向量数据

  • Ollama(bge-m3):向量计算服务

bge-m3模型支持多语言,生成1024维向量。这些向量是归一化过的,可以直接用来计算余弦相似度。

这里有个大坑:OpenSearch的数据管理。向量数据增长很快,内存不可能无限扩大。一部分数据必须放磁盘,这会严重影响查询速度。怎么配置合适的数据滚动策略是个难题。

接口服务层

用Web框架提供API。比较麻烦的是大模型的流式输出,一般用SSE协议,返回Markdown格式。现在前端处理Markdown有成熟的方案,大模型生成Markdown也很方便。

大模型服务层

选一个用着顺手的就行,DeepSeek、Qwen、豆包都可以。

这里也有个问题:接口响应速度和并发能力。不过问答类应用输出慢一点用户还能接受。


开发中遇到的坑

尝试RAGflow的经历

RAGflow是开源的RAG和Agent框架,支持工作流和知识库构建。

但它不太适合我的需求:

  • 服务难以横向扩展,提升并发能力有限

  • 无法实现新数据权重提升的功能

  • 组合搜索(关键词+语义+条件筛选)很难实现

OpenSearch的优化

向量存储很占内存。我把float类型转成byte类型,内存占用减少了四分之三。尽量让数据留在内存里,从磁盘查询可能要几十秒,用户等不了。

提示词调试

我用大模型来生成提示词。先让大模型生成初始提示词,在实际场景中测试,然后根据结果把原提示词和修改意见再交给大模型调整。这样不断循环优化。

意图识别的尝试

为了让搜索结果更好、查询更快,我尝试先对用户问题做意图识别和分类。这个真的很难。

用向量相似度做意图识别,准确率有待验证。用大模型做意图识别又会影响响应速度,同样有准确率问题,还需要不断调整提示词。


一些有用的发现

关于OpenSearch的衰减函数(Gauss、Linear、Exponential),我花了不少时间才弄明白参数怎么用:

  • origin:分数为1的点

  • offset:在[origin - offset, origin + offset]范围内,分数都是1

  • scale:衰减范围

  • decay:衰减值

具体来说:

  1. 在origin加减offset范围内,分数=1

  2. 在offset到scale之间,分数按选择的函数衰减

  3. 在scale边界上,分数=decay

  4. 超过scale范围,分数继续衰减


项目总结

这个项目让我想起以前做推荐系统的经历,流程很相似:

  1. 召回:从海量数据中找出少量相关数据(对应OpenSearch查询)

  2. 排序:对召回结果排序,进一步减少数据量(按OpenSearch分数排序)

  3. 重排序:用规则或模型再次排序,得到最终结果

  4. 展示:把结果给用户

我希望项目能多迭代几次,得到用户反馈,把开发中没想清楚的问题弄明白。

AI Agent这个方向很热,不知道热度能持续多久。希望能再有一两年时间,多做一些相关项目,把这个领域真正搞懂。


给新手的建议

如果你想尝试AI Agent开发,我的建议是:

  1. 先从简单的开始:不要一开始就追求完美架构,能跑起来最重要

  2. 重视数据质量:知识库的内容质量直接影响最终效果

  3. 多测试多调整:提示词需要反复调试,没有一蹴而就的方法

  4. 关注性能问题:向量搜索的性能优化很重要,直接影响用户体验

  5. 保持学习:这个领域变化快,新技术新工具不断出现

开发过程中,最大的收获不是做出了一个系统,而是弄明白了整个流程和其中的关键问题。虽然还有很多不完美的地方,但至少迈出了第一步。

AI Agent开发就像搭积木,需要把各个组件合理组合起来。数据收集、向量化、搜索、大模型处理,每个环节都有需要注意的地方。把这些环节打通,就能做出有用的应用。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/13298

当前常用的AI平台,含ChatGPT,GPT-4,Claude等

当今时代,人工智能已经成为了各行各业中无可替代的角色。从智能客服到自动驾驶汽车,从语音识别到图像处理,人工智能的应用正在不断扩展。而在这个人工智能的时代,许多AI平台已经涌现出来

AI 浪潮下的程序员生存法则:当工具进化,人类如何守住创造力高地

作为一名在代码世界摸爬滚打八年的程序员,我的工位曾堆满了各类技术书籍,如今屏幕上最常亮的却是 Copilot、ChatGPT 这些 AI 工具的界面。从 2023 年底被朋友 拽入 AI 大门

程序员会被AI取代?Claude团队95%AI写代码的真相

当Claude产品负责人宣布团队95%的代码由AI生成时,技术圈瞬间掀起巨浪。许多开发者开始焦虑,担心自己的职业生涯即将终结。但真实情况究竟如何?让我们揭开表象。

TypeScript开发AI应用,正成为越来越多人的选择

AI技术正在快速发展,越来越多的开发者开始构建基于大语言模型(LLM)、多智能体协作、浏览器端直接推理的新应用。在这个趋势下,TypeScript 凭借其优秀的类型检查、完善的工具支持和活跃的社区

Claude Code 实战指南:15个核心技巧,开发效率飙升10倍

很多开发者用过Claude Code,但感觉效果平平,没有传说中那么神奇。问题往往出在使用方法上。别再只用它写写简单的函数或修修小Bug了!掌握下面这15个高手技巧,Claude Code 能真正成为你的开发加速器

TraeIDE功能介绍:从安装到项目开发全指南

Trae IDE 是字节跳动在2025年推出的一款面向开发者的智能编程工具。它主打自然语言写代码,深度融合了多种主流大模型,支持完全中文的操作环境,非常适合国内开发者尤其是新手使用。最重要的是,它免费向用户开放。

Trae IDE 新手使用教程:从下载安装到第一个项目

Trae 是字节跳动推出的一款智能编程软件,内置 AI 辅助功能,支持用中文写代码。它类似 Cursor 或 VS Code,但更贴合中文用户的使用习惯,接入了多个常见的 AI 大模型。Trae 可以帮助开发者自动补全代码、解释错误、甚至根据一句话生成整个项目

Trae:字节跳动推出的免费AI编程助手,用中文写代码

Trae 是字节跳动公司推出的一款智能编程软件,它内置了多种 AI 大模型,能帮助开发者更轻松地写代码。这款工具完全免费,界面支持中文,对国内用户非常友好。不管你是刚学编程,还是已经工作,都可以用它来提升效率。

热门 AI 编程工具有哪些?哪款更适合你?

在科技飞速发展的当下,AI 编程工具已成为广大程序员的得力助手。这些工具不仅能大幅提升编程效率,还能降低编程的难度。如果你还没用过这些工具,可能会在开发效率上落后于别人。

手把手教你用扣子(Coze)打造AI工作流:3分钟轻松上手

工作流就像一条流水线,把完整任务拆分成多个小步骤,然后按照特定顺序和逻辑组合起来。我们日常生活中其实到处都是工作流的例子。只要是这种规律性的工作流程,都可以尝试用AI工作流来实现自动化。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!