Ollama 怎么搭建本地智能体?用工具调用完成文件查询并核对结果

用 Ollama 工具调用搭建只读文件查询智能体,限制目录和函数权限,并用越权请求验证安全边界。

用 Ollama 搭本地智能体,关键并不是让模型直接操作整台电脑,而是把少量、可审计的函数交给模型选择。下面做一个“查找笔记文件”的最小智能体:模型只能列出指定目录里的 .txt 文件,不能访问目录外路径,也不能修改文件。

先确认工具调用链路

Ollama 的官方工具调用文档说明,客户端把工具定义随消息发给模型;模型返回工具名称和参数,真正执行函数的是你的程序。聊天 API 文档列出了 messages、tools 和响应中的工具调用字段。因此,权限边界应写在程序里,不能只靠提示词。

Ollama 怎么搭建本地智能体?用工具调用完成文件查询并核对结果

先安装 Ollama,并按官方快速开始拉取一个明确支持工具调用的模型。模型标签会变化,正式使用前在模型页核对 capabilities。Python 端安装客户端:

python -m pip install ollama
mkdir notes

在 notes 目录新建 project.txt 和 meeting.txt,内容可以是无敏感信息的测试文本。

写一个受限工具

from pathlib import Path
from ollama import chat

NOTES = Path("notes").resolve()

def list_notes(keyword: str) -> list[str]:
    keyword = keyword.strip().casefold()
    return [
        p.name for p in NOTES.glob("*.txt")
        if keyword in p.name.casefold()
    ]

tools = [{
    "type": "function",
    "function": {
        "name": "list_notes",
        "description": "按文件名关键词列出 notes 目录中的 txt 文件",
        "parameters": {
            "type": "object",
            "properties": {"keyword": {"type": "string"}},
            "required": ["keyword"]
        }
    }
}]

messages = [{"role": "user", "content": "查找文件名含 project 的笔记"}]
response = chat(model="qwen3", messages=messages, tools=tools)
messages.append(response.message)

for call in response.message.tool_calls or []:
    if call.function.name != "list_notes":
        raise RuntimeError("拒绝未授权工具")
    result = list_notes(call.function.arguments["keyword"])
    messages.append({
        "role": "tool",
        "tool_name": "list_notes",
        "content": str(result)
    })

final = chat(model="qwen3", messages=messages, tools=tools)
print(final.message.content)

如果你使用的模型标签不是 qwen3,只替换 model 值,工具白名单和路径限制不要删。

怎么判断智能体真的工作

  1. 问“查找 project”,结果应出现 project.txt,不应出现无关文件。
  2. 问“删除 project.txt”,程序必须拒绝,因为根本没有暴露删除工具。
  3. 问“列出上级目录”,函数仍只搜索已经固定的 notes 目录。

运行后先核对工具名称、参数和返回文件名,再决定是否增加新工具。生产环境还要给每次调用记录用户、参数和结果,并对写操作加入人工确认。

适用边界

这是一段依据官方接口编写的本地演示,没有代替你在具体模型版本上执行。模型可能不发起工具调用,或生成不合规参数;程序必须把这两种情况当作失败处理。不要把任意 shell、任意路径读取或数据库管理员权限直接交给模型。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32382.html

赞 (0)
AI小管家的头像AI小管家
Gemini 在 Google Sheets 中怎么生成表格?从需求描述到核对列值和公式
上一篇 1小时前
DeepSeek 本地部署有哪些优缺点?按隐私、成本、速度和维护负担判断
下一篇 1小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部