目录
你是不是经常在电脑里找文件,翻遍了文件夹却找不到?别担心,今天我就来教你用 Google ADK 和 Qwen3 打造一个超级智能的 AI Agent,让你轻松搞定 Windows 文件查找!
一、什么是 Google ADK?
Google ADK 就像是一个“智能体开发工具箱”,它能帮助你快速创建各种智能 Agent,让 Agent 理解你的需求,还能利用工具帮你解决问题。通过 ADK,你可以轻松定义 Agent 的行为、描述它的能力,还能集成外部工具来增强它的功能。
二、快速搭建智能 Agent
(一)设置环境变量
首先,我们要告诉程序到哪里找模型和 API,这就像给机器人指路一样。我们通过设置环境变量,让它知道去哪里找资源。例如:
import os
os.environ["OLLAMA_API_BASE"] = "http://localhost:11434"
os.environ["OPENAI_API_BASE"] = "https://dashscope.aliyuncs.com/compatible-mode/v1"
os.environ["OPENAI_API_KEY"] = "sk-你的key"
这里的 OLLAMA_API_BASE
指向本地运行的 Ollama 服务,而 OPENAI_API_BASE
和 OPENAI_API_KEY
则用于连接到在线的 Qwen3 的 API 服务。
(二)创建智能体
接下来,我们用 Python 定义一个 Agent:
from google.adk.agents import Agent
root_agent = Agent(
model=LiteLlm(model="openai/qwen-turbo-2025-04-28"),
name="search_agent",
description="能够利用工具进行关键词搜索,获取磁盘文件信息的智能助手。",
instruction="""你是一个能够利用工具回答用户关于关键词文件搜索问题,和打开文件的智能助手。
1、当用户需要搜索文件,不包含“全文搜索”时,默认用find_files_with_powershell_regex工具调用结果给出符合用户要求的信息,如果返回有信息,输出全部信息,如果返回错误,则说抱歉,找不到,不要输出与任务无关的信息
3、只有当用户输入包含“全文搜索”文字需求时,才调用工具anytxt_get_result,如果返回有信息,输出全部信息,如果返回错误,则说抱歉,找不到,不要输出与任务无关的信息
2、当用户想要打开找到的文件时,根据历史信息提取完整文件路径,调用工具open_file_by_path
""",
tools=[find_files_with_powershell_regex, open_file_by_path],
)
我们给这个 Agent 起名叫“search_agent”,并描述了它的功能:能利用工具进行关键词搜索和打开文件。我们还给它指定了 Qwen3 模型,让它更聪明地理解我们的需求。
三、利用工具组合
(一)PowerShell 工具
通过 PowerShell 命令,可以搜索文件夹里的文件。我们写的代码能用正则表达式去匹配文件名,还能排序,就像你有个超级搜索助手一样。比如,你可以找所有以“DCS”开头的 Word 文件:
def find_files_with_powershell_regex(root_dir: str, regex_pattern: str) -> dict:
powershell_command = f"""Get-ChildItem -Path "{
root_dir}" -Recurse -File | Where-Object {
{ $_.Name -match '{
regex_pattern}' }} | Select-Object FullName, LastWriteTime | Sort-Object LastWriteTime -Descending | ForEach-Object {
{ "{
{0}}$($_.FullName){
{0}}$($_.LastWriteTime)" -f [char]0 }} """
print(f"执行查找指令 {
powershell_command}")
try:
result = subprocess.run(['powershell.exe', '-Command', powershell_command], capture_output=True, text=True, check=True)
output = result.stdout.strip()
if output:
print(f"找到 {
len(output.splitlines())} 个文件:")
for line in output.splitlines