
上期我们学会了用Ollama Function Calling让本地模型调用工具。今天把能力封装成标准API服务,任何应用都能通过HTTP调用你的AI Agent。
为什么需要API化?直接在Python脚本里调用Ollama没问题,但当你需要给前端网页、企业微信机器人、App后端提供AI能力时,暴露一个标准REST API是最佳选择。FastAPI是Python最快的Web框架之一,天然支持异步和自动生成API文档。
第一步,搭建FastAPI项目骨架。安装依赖:pip install fastapi uvicorn ollama。创建main.py。定义工具schema(天气查询get_weather、股价查询get_stock_price两个函数),实现对应的实际功能函数。
第二步,核心接口设计。定义POST /agent/chat端点接收用户消息,调用ollama.chat让模型决定是否工具调用→执行函数→喂回结果→返回最终回复。关键是把Ollama的tool_calls响应标准化为JSON给前端。
第三步,流式响应支持(Streaming)。当模型需要多轮工具调用时,前端不应该卡住等全部完成。FastAPI的StreamingResponse可以逐token推送——先推thinking状态→推工具调用详情→推最终答案。用户体验直接拉满。
进阶技巧:工具调用的安全沙箱。开放API给外部调用时,必须限制模型可调用的函数范围。比如企业微信机器人不应该能执行shell命令或访问文件系统。通过tools白名单机制过滤敏感函数。
生产部署:uvicorn main:app --host 0.0.0.0 --port 8000即可启动。配合systemd或docker-compose实现开机自启和进程守护。加上nginx反向代理+SSL证书就是生产级AI Agent微服务。
完整代码约80行,包含天气查询、股价查询、流式响应、工具白名单。API文档自动生成在http://localhost:8000/docs。下期预告:给这个Agent加上数据库记忆——用ChromaDB实现长期记忆和个性化。
夜雨聆风