5分钟为Google ADK 接入Ollama本地小模型--可以接入但不推荐

721 阅读8分钟

快速教程:如何在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

Download

Windows

Download

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

操作步骤:

  1. 浏览器访问 http://localhost:8000
  2. 左上角下拉菜单选择 "ollama_agent"
  3. 开始与基于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本地模型的关键改动:

  1. 导入LiteLLM适配器
from google.adk.models.lite_llm import LiteLlm
  1. 指定Ollama模型
model=LiteLlm(model="ollama/deepseek-r1:8b")
  1. 无需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的无限可能!