Go ADK入门套件
在Go中使用Google ADK构建AI代理的最小样板。
特性
- 顺序博客管道(概述→ 作者→ 编辑)
- 结构化日志记录
slog(调试、信息、错误级别) - 带有会话状态跟踪的代理输出记录器(可选)
- 用于配置的命令行标志(日志级别、代理记录器、提示)
- 干净、最少的代码库
项目结构
go-adk-starter-kit/
├── cmd/
│ └── go-adk-starter-kit/
│ └── main.go # Application entry point
├── internal/
│ ├── config/
│ │ └── config.go # Configuration management
│ ├── logger/
│ │ └── logger.go # Structured logging with slog
│ └── agents/
│ └── blog/
│ └── blog.go # Blog pipeline agent
├── go.mod # Go module definition
├── go.sum # Go module checksums
├── Makefile # Build and development tasks
├── .env # Environment variables (git ignored)
├── .gitignore # Git ignore patterns
└── README.md # This file这遵循惯用的Go项目结构:
cmd/-应用程序入口点(主包)internal/-私有应用程序代码(外部项目无法导入)internal/config/-配置管理internal/logger/-日志记录实用程序internal/agents/-代理实现
设置
- 克隆或复制此入门套件
- 安装依赖项:
go mod download- 设置API密钥:
# Create .env file and add your GOOGLE_API_KEY
echo "GOOGLE_API_KEY=your_api_key_here" > .env用法
使用默认提示运行:
go run cmd/go-adk-starter-kit/main.go使用自定义提示运行:
go run cmd/go-adk-starter-kit/main.go -prompt "Write a blog post about Golang best practices"或者构建并运行:
go build -o bin/go-adk-starter-kit ./cmd/go-adk-starter-kit
./bin/go-adk-starter-kit使用Makefile
该项目包括一个用于常见任务的Makefile:
# Build the application
make build
# Run with default settings
make run
# Run with debug logging
make run-debug
# Run without agent logger
make run-no-logger
# Clean build artifacts
make clean
# Install dependencies
make deps
# Format code
make fmt
# Show all available targets
make help命令行标志
-log-level:设置日志记录级别(debug,info,error)-默认值:info-agent-logger:启用/禁用代理输出日志记录(true,false)-默认值:true-prompt:要处理的博客提示-默认值:使用blog.DefaultPrompt()
例子
禁用代理记录器的调试模式:
go run cmd/go-adk-starter-kit/main.go -log-level debug -agent-logger=false带有自定义提示的仅错误日志:
go run cmd/go-adk-starter-kit/main.go -log-level error -prompt "AI trends in 2024"使用代理输出进行完整调试:
go run cmd/go-adk-starter-kit/main.go -log-level debug -agent-logger=true -prompt "Microservices vs Monoliths"运作原理
博客管道使用 顺序代理 图案:
- 大纲代理 -创建结构化大纲
- WriterAgent -根据大纲编写内容
- 编辑代理 -打磨和精炼草稿
每位代理人:
- 从会话状态读取输入
- 处理内容
- 将输出存储在会话状态中,以供下一个代理使用
日志记录
入门套件使用结构化日志记录 slog:
- 日志级别:
debug,info,error-可通过以下方式配置-log-level旗帜 - 应用程序日志:JSON格式到stdout,带结构化字段
- 代理输出:打印到控制台很漂亮(可以用禁用
-agent-logger=false) - 会话状态:跟踪并记录调试
- 调试模式:提供代理执行、会话详细信息和内容长度的详细跟踪
延伸
要添加自己的代理,请执行以下操作:
- 在下创建新包
internal/agents/ - 实施a
Build()返回的函数agent.Agent - 定义代理管道(顺序、并行或循环)
- 更新
cmd/go-adk-starter-kit/main.go使用您的代理 - 更新
internal/logger/跟踪代理的输出 - 向添加配置选项
internal/config/如有需要
添加新命令
要添加其他入口点,请执行以下操作:
- 在下创建新目录
cmd/(例如。,cmd/my-tool/) - 添加一个
main.go包含应用程序逻辑的文件 - 从…进口
internal/根据需要打包 - 使用以下内容构建:
go build -o bin/my-tool ./cmd/my-tool
依赖项
google.golang.org/adk-谷歌代理开发工具包google.golang.org/genai-Gemini API客户github.com/joho/godotenv-环境变量管理log/slog-结构化日志记录(stdlib)
贡献
欢迎投稿!以下是如何开始:
开发设置
- 分叉存储库
- 克隆你的叉子:
git clone https://github.com/your-username/go-adk-starter-kit.git
cd go-adk-starter-kit- 安装依赖项:
go mod download- 创建要素分支:
git checkout -b feature/your-feature-name贡献指南
- 代码的风格:遵循标准Go惯例
- 跑 go fmt ./... 在承诺之前 - 使用有意义的变量和函数名 - 为导出的函数和类型添加注释
- 测试:添加新功能的测试
- 在以下位置进行测试 *_test.go 文件 - 使用运行测试 go test ./...
- 提交:写明确的提交消息
- 使用现在时态(“添加特征”而不是“添加特征“) - 参考问题(如适用)
- 文档:如果需要,请更新README.md
- 记录新标志或配置选项 - 添加新功能的示例
提交变化
- 确保您的代码通过所有检查:
go fmt ./...
go vet ./...
go test ./...- 提交您的更改:
git add .
git commit -m "Add: description of your changes"- 推你的叉子:
git push origin feature/your-feature-name- 打开拉取请求:
- 描述你做出了哪些改变以及为什么 - 参考任何相关问题 - 等待审核并处理反馈
贡献的想法
- 添加新的代理模式(并行、循环、条件)
- 实施其他配置选项
- 添加对其他LLM提供商的支持
- 改进错误处理和日志记录
- 添加集成测试
- 创建示例用例
- 改进文档
报告问题
发现错误或有建议? 打开一个问题 与:
- 对问题或建议的清晰描述
- 复制步骤(针对bug)
- 预期行为与实际行为
- 您的环境(Go版本、操作系统)
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
