内容提要
本教程介绍如何在PHP、MySQL、Gemini Flash和cPanel共享主机上构建AI代理。系统通过代理循环接收用户提示,调用工具(如保存笔记、搜索网页、发送邮件),将对话历史存储在MySQL中,并持续推理直至生成最终答案。文章涵盖数据库设置、PHP连接、Gemini API调用、工具注册、记忆管理、代理循环、公共API端点部署及生产加固建议。
延伸解读
低成本部署的现实考量
文章强调使用PHP、MySQL和cPanel共享主机即可构建AI代理,无需复杂云架构。但需注意,共享主机通常有资源限制,如CPU、内存和并发连接数。Gemini Flash的免费额度可能有限,且API调用会产生延迟。生产环境需监控资源使用和API配额,避免因超限导致服务中断。
工具调用的安全边界
AI代理的工具调用(如发送邮件、搜索网页)存在安全风险。文章建议在工具内部进行参数验证,但实际部署中还需考虑:防止滥用(如恶意用户诱导代理发送垃圾邮件)、限制外部API的访问范围、对敏感操作(如发送邮件)增加用户确认机制。此外,工具执行结果应记录日志,便于审计和排查问题。
记忆管理的效率与扩展
文章中的记忆管理采用每次请求后删除并重写全部历史记录,简单但效率低。随着对话增长,API请求体变大,成本增加。生产环境可考虑增量存储、对话摘要或滑动窗口,仅保留最近N轮消息。同时,MySQL表结构可优化,如添加索引、分区,以提升查询性能。
生产加固的优先级
文章列出了多项生产加固建议,但实际部署时应优先处理认证和速率限制,防止未授权访问和资源滥用。其次,加强工具参数验证和敏感操作确认,降低安全风险。日志记录和监控有助于快速定位问题。最后,定期更新依赖和API密钥,确保系统安全。
Q&A
如何用PHP和cPanel构建一个AI代理?
本教程介绍了使用PHP、MySQL、Gemini Flash和cPanel共享主机构建AI代理的方法。系统通过代理循环接收用户提示,调用工具(如保存笔记、搜索网页、发送邮件),将对话历史存储在MySQL中,并持续推理直至生成最终答案。文章涵盖了数据库设置、PHP连接、Gemini API调用、工具注册、记忆管理、代理循环、公共API端点部署及生产加固建议。
AI代理的架构由哪些部分组成?
系统有五个主要部分:公共端点接收用户请求;代理循环将对话发送给Gemini Flash;工具注册表告诉Gemini哪些函数可用;PHP工具执行操作(如保存笔记、搜索网页、发送邮件);MySQL存储对话以便代理跨请求继续。
如何设置MySQL数据库来存储对话历史和笔记?
需要创建两个表:agent_memory用于存储对话历史,包含session_id、role、content字段;agent_notes用于存储用户要求记住的笔记,包含session_id和note字段。在phpMyAdmin中运行提供的SQL语句即可。
如何在PHP中调用Gemini Flash API?
在gemini.php中定义gemini_request函数,使用cURL发送POST请求到Gemini API的generateContent端点,包含对话内容和工具定义。解析响应时,如果包含functionCall则返回函数调用,否则返回文本。
如何定义工具并让Gemini调用它们?
在tool_registry.php中定义工具注册表,包含工具名称、描述和参数结构。Gemini根据描述决定是否调用工具,并返回函数调用。PHP端通过run_tool函数匹配工具名称并执行相应的PHP函数。
如何实现对话记忆功能?
在memory.php中实现load_memory和save_memory函数。load_memory从agent_memory表读取当前会话的历史消息,格式化为Gemini期望的格式。save_memory删除旧历史并插入当前历史。代理循环在每次请求前加载历史,在响应后保存更新。
如何部署到cPanel共享主机?
将项目上传到public_html/agent/目录,在cPanel中创建数据库和用户,运行SQL,更新db.php中的数据库凭据和gemini.php中的API密钥,选择PHP 8.1+并启用cURL扩展,确保tools文件夹有.htaccess文件。然后通过https://yourdomain.com/agent/index.php访问端点。
生产环境加固有哪些建议?
建议包括:添加认证(如API令牌)、速率限制、工具日志记录、更强的参数验证、更好的记忆管理(如摘要旧消息)、敏感操作(如发送邮件)需用户确认、保护API密钥和数据库密码等。