快速教程:如何在Google ADK中集成Ollama本地小模型。通过LiteLLM适配器,轻松让你的AI Agent使用本地部署的Deepseek-R1、Qwen3、Llama3.1等开源模型,享受完全本地化的AI服务。本教程涵盖Ollama安装、环境配置、代码实现和实际测试,让你快速掌握本地小模型的接入技巧,并了解本地小模型的局限性和实际效果。
什么是 Google ADK + Ollama 组合
Google ADK (Agent Development Kit) 是Google推出的AI代理开发工具包,而Ollama是一个强大的本地模型运行工具。通过LiteLLM适配器,我们可以轻松在Google ADK中集成Ollama本地模型,享受完全本地化的AI服务。
今天我们用5分钟时间,教你如何为Google ADK接入Ollama本地小模型。相比使用云端API,本地模型具有以下优势:
- 🏠 完全本地化 - 数据不出本地,保护隐私安全
- 💰 零API费用 - 无需付费API调用,节省成本
- 🚀 响应速度快 - 本地推理,无网络延迟
- 🔒 离线可用 - 无需互联网连接也能正常工作
- 🎯 模型可选 - 支持多种开源模型,灵活切换
学完这篇文章,你将具备以下能力:
- 熟练配置Google ADK + Ollama开发环境
- 掌握使用LiteLLM适配器集成本地模型
- 学会测试和调试基于Ollama的AI Agent
- 了解本地小模型的局限性和实际的效果
1. 环境准备与依赖安装
参考ollama:github.com/ollama/olla…
安装Ollama
首先需要安装Ollama并下载模型:
macOS
Windows
Linux
curl -fsSL https://ollama.com/install.sh | sh
下载推荐模型
我们测试三个优秀的8B参数小模型:
# 下载Deepseek-R1:8B
ollama pull deepseek-r1:8b
# 下载Qwen3:8B
ollama pull qwen2.5:8b
# 下载Llama3.1:8B
ollama pull llama3.1:8b
虚拟环境配置(强烈推荐)
# 创建专用虚拟环境
python -m venv .venv
# 激活虚拟环境
# macOS/Linux:
source .venv/bin/activate
# Windows CMD:
# .venv\Scripts\activate.bat
# Windows PowerShell:
# .venv\Scripts\Activate.ps1
安装必要依赖
# 安装Google ADK
pip install google-adk
# 安装LiteLLM(用于连接Ollama)
pip install litellm
2. Agent项目构建
项目结构
parent_folder/
ollama_agent/
__init__.py
agent.py
.env
创建项目文件夹
mkdir ollama_agent/
创建 __init__.py
echo "from . import agent" > ollama_agent/__init__.py
核心Agent实现
创建 ollama_agent/agent.py 文件:
ollama_agent/agent.py
import datetime
from zoneinfo import ZoneInfo
from google.adk.agents import Agent
# 关键:导入LiteLLM适配器
from google.adk.models.lite_llm import LiteLlm
def get_weather(city: str) -> dict:
"""Retrieves the current weather report for a specified city.
Args:
city (str): The name of the city for which to retrieve the weather report.
Returns:
dict: status and result or error msg.
"""
if city.lower() in ["beijing", "北京"]:
return {
"status": "success",
"report": (
"北京今天天气晴朗,温度25摄氏度(77华氏度)。"
),
}
else:
return {
"status": "error",
"error_message": f"抱歉,我没有'{city}'的天气信息。",
}
def get_current_time(city: str) -> dict:
"""Returns the current time in a specified city.
Args:
city (str): The name of the city for which to retrieve the current time.
Returns:
dict: status and result or error msg.
"""
if city.lower() in ["beijing", "北京"]:
tz_identifier = "Asia/Shanghai"
else:
return {
"status": "error",
"error_message": (
f"抱歉,我没有{city}的时区信息。"
),
}
tz = ZoneInfo(tz_identifier)
now = datetime.datetime.now(tz)
report = (
f'{city}的当前时间是 {now.strftime("%Y年%m月%d日 %H:%M:%S %Z%z")}'
)
return {"status": "success", "report": report}
# 核心配置:使用LiteLLM连接Ollama本地模型
root_agent = Agent(
name="weather_time_agent",
model=LiteLlm(model="ollama/deepseek-r1:8b"), # 关键配置
description=(
"一个可以回答城市时间和天气问题的智能助手"
),
instruction=(
"你是一个有用的智能助手,可以回答用户关于城市时间和天气的问题。请始终使用中文回复,语气要友好亲切。"
),
tools=[get_weather, get_current_time],
)
3. 配置环境变量
创建 ollama_agent/.env 文件:
ollama_agent/.env
# Ollama服务地址配置
OLLAMA_API_BASE=http://localhost:11434
配置说明:
OLLAMA_API_BASE:指定Ollama服务的API地址- 默认值:
http://localhost:11434(本地服务) - 如果Ollama运行在其他地址或端口,需要相应修改
4. 模型切换配置
支持的模型配置
你可以轻松切换不同的本地模型:
model=LiteLlm(model="ollama/deepseek-r1:8b")
model=LiteLlm(model="ollama/qwen3:8b")
model=LiteLlm(model="ollama/llama3.1:8b")
5. 运行你的Ollama Agent
切换到Agent项目的上级目录:
parent_folder/ <-- 进入到这个目录
ollama_agent/
__init__.py
agent.py
.env
方式1:可视化Web界面(推荐)
启动Web开发环境:
adk web
操作步骤:
- 浏览器访问
http://localhost:8000 - 左上角下拉菜单选择 "ollama_agent"
- 开始与基于Ollama本地模型的Agent对话
方式2:命令行终端
adk run ollama_agent
方式3:API服务接口
adk api_server
💡 实战测试用例
功能测试
中文对话测试:
用户:北京现在的天气怎么样?
Agent:🌤️ 北京今天天气晴朗,温度25摄氏度(77华氏度)。
时间查询测试:
用户:北京现在几点了?
Agent:🕐 北京的当前时间是 2024年12月25日 14:30:15 CST+0800
异常处理测试:
用户:上海的天气如何?
Agent:❌ 抱歉,我没有'上海'的天气信息。
🔧 技术要点解析
关键代码变更
相比云端API,接入Ollama本地模型的关键改动:
- 导入LiteLLM适配器:
from google.adk.models.lite_llm import LiteLlm
- 指定Ollama模型:
model=LiteLlm(model="ollama/deepseek-r1:8b")
- 无需API密钥:
- 不需要环境变量配置
- 不需要申请API账户
- 完全本地化运行
LiteLLM的Ollama支持
LiteLLM对Ollama的支持格式:
# 基础格式
model="ollama/model_name"
# 指定Ollama服务地址(默认localhost:11434)
model="ollama/model_name" # 使用默认地址
⚠️ 重要提醒:本地小模型的现实局限性
经过实际测试,我们发现了一个重要的事实:这篇文章实际上是一篇"拔草"文章,目的是让大家了解本地小模型在Agent场景下的真实表现。
📊 实测结果对比
llama3.1:8b
qwen3:8b
deepseek-r1:8b
官方deepseek在线API调用deepseek-chat,充了10块钱的,用了快2俩月了,测试学习基本够用
从ollama本地小模型切换到在线,交互效果立竿见影,有一种实力派歌手现场修好了现场音响的即视感
官方豆包在线API调用Doubao-Seed-1.6,使用的免费额度,火山方舟里面有很多免费使用额度的模型
使用openai provider对接的豆包模型,模型效果同样很丝滑
相同的 agent.py 代码,不同模型的表现:
| 模型类型 | 工具调用 | 自然语言回复 | 用户体验 | 推荐指数 |
|---|---|---|---|---|
| 本地8B小模型 | ✅ 正常 | ❌ 很差 | ❌ 不理想 | ⭐⭐ |
| 在线Deepseek API | ✅ 正常 | ✅ 优秀 | ✅ 很好 | ⭐⭐⭐⭐⭐ |
| 豆包大模型 | ✅ 正常 | ✅ 优秀 | ✅ 很好 | ⭐⭐⭐⭐⭐ |
🔍 核心问题分析
本地小模型的能力断层:
- 第一层能力:✅ 结构化推理(工具调用)- 表现正常
- 第二层能力:❌ 根据工具的返回,自然语言生成(用户友好回复)- 表现很差
💡 实用建议
1. 推荐方案:使用在线大模型
优先推荐豆包大模型,学习和测试阶段使用免费的token额度
用完之后,可以继续使用付费的豆包大模型或者付费的Deepseek API
之前往Deepseek API官网充了10块,测试学习用了两个月还没用完,不到一杯奶茶🥤的价格就能用很久,性价比非常高
2. 成本对比分析
本地小模型:
- 初始成本:硬件要求(16GB+ RAM)
- 运行成本:电费、设备折旧
- 时间成本:配置、调试、维护
- 实际效果:工具调用正常,用户体验差
在线大模型:
- 初始成本:几乎为零
- 运行成本:API调用费用(豆包有免费额度)
- 时间成本:配置简单,即用即得
- 实际效果:工具调用正常,用户体验优秀
总之:强烈建议大家最初学习的时候,直接使用在线的大模型,省时省力体验效果优秀👍
本地小模型更适合:
- 理解Google ADK的架构原理
- 验证技术栈的可行性
- 在完全离线环境下的特殊需求
📚 相关教程推荐
如果你想使用在线大模型,可以参考:5分钟为Google ADK 接入Deepseek国产大模型
总结:这篇文章的价值在于让大家了解本地小模型的真实能力边界,避免在不合适的场景下踩坑。对于大多数开发者来说,直接使用在线大模型是更明智的选择。 🎯
🎉 成就解锁!
恭喜你成功为Google ADK接入了Ollama本地小模型🎊!
你已经掌握了:
- ✅ 安装和配置Ollama本地环境
- ✅ 使用LiteLLM适配器连接本地模型
- ✅ 创建基于本地小模型的AI Agent
- ✅ 测试和调试Ollama驱动的智能助手
- ✅ 了解本地小模型最终效果的局限性
希望本文对你有所帮助,想了解更多AI实践,关注我的同名公众号:),定期分享AI实战,一起探索AI的无限可能!