-
Notifications
You must be signed in to change notification settings - Fork 295
docs: revamp README with comprehensive example usage and guidance #238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
appleboy
commented
Nov 8, 2025
- Rewrite and expand the README to provide a detailed overview of the example categories, launch options, and usage instructions
- Add an extensive table of contents with clear links to all major example types
- Document step-by-step instructions for running examples in various modes (console, restapi, a2a, webui)
- Clarify environment variable requirements and configuration patterns across examples
- Distinguish between full and production launchers, specifying their supported modes
- Add sections on contributing, common patterns, and integration prerequisites for advanced examples
- Improve consistency, clarity, and completeness throughout the guide
- Rewrite and expand the README to provide a detailed overview of the example categories, launch options, and usage instructions - Add an extensive table of contents with clear links to all major example types - Document step-by-step instructions for running examples in various modes (console, restapi, a2a, webui) - Clarify environment variable requirements and configuration patterns across examples - Distinguish between full and production launchers, specifying their supported modes - Add sections on contributing, common patterns, and integration prerequisites for advanced examples - Improve consistency, clarity, and completeness throughout the guide Signed-off-by: appleboy <[email protected]>
Summary of ChangesHello @appleboy, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly enhances the documentation for the ADK Go examples by revamping the Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request provides a comprehensive and much-needed revamp of the examples/README.md. The new documentation is well-structured, with a clear table of contents, detailed usage instructions for various examples, and helpful sections on common patterns and contribution guidelines. This will significantly improve the developer experience for anyone working with the ADK examples.
I've left a few comments to address some inconsistencies between the documentation and the example code, mainly regarding function names and usage patterns in the launcher system. The most important one is a typo in a function name that would prevent the example code from compiling. Addressing these points will ensure the documentation is perfectly aligned with the current state of the codebase.
| ### Production Launcher | ||
|
|
||
| ```go | ||
| l := prod.NewLauncher() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| ```go | ||
| l := full.NewLaucher() | ||
| l := full.NewLauncher() | ||
| err = l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The method ParseAndRun appears to be outdated, as all current examples in the repository use Execute instead. To maintain consistency and prevent confusion, this should be updated. The universal.ErrorOnUnparsedArgs argument also seems to be no longer required with the Execute method.
| err = l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs) | |
| err = l.Execute(ctx, config, os.Args[1:]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you don't need special handling of unparsed arguments you should use Execute instead of ParseAndRun
| l := full.NewLauncher() | ||
| err = l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs) | ||
| if err != nil { | ||
| log.Fatalf("run failed: %v\n\n%s", err, l.FormatSyntax()) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| l := full.NewLauncher() | ||
|
|
||
| // 3. Parse and run | ||
| err := l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The example code here uses l.ParseAndRun, but all the examples in this directory (like quickstart, a2a, etc.) use l.Execute. To maintain consistency with the actual example code and avoid confusion, it would be better to use l.Execute in this documentation snippet as well. The third argument universal.ErrorOnUnparsedArgs also doesn't seem to be used with Execute.
| err := l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs) | |
| err := l.Execute(ctx, config, os.Args[1:]) |
|
@dpasiukevich Any feedback? |
| go run ./examples/<example-name>/main.go console | ||
|
|
||
| # Run with REST API server | ||
| go run ./examples/<example-name>/main.go restapi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, it won't work.
Instead we should have
go run ./examples//main.go web api
| go run ./examples/<example-name>/main.go restapi | ||
|
|
||
| # Run with Agent-to-Agent (A2A) protocol | ||
| go run ./examples/<example-name>/main.go a2a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should have go run ./examples/<example-name>/main.go web a2a
| go run ./examples/<example-name>/main.go a2a | ||
|
|
||
| # Run with Web UI | ||
| go run ./examples/<example-name>/main.go webui |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
webui => web api webui
| go run ./examples/a2a/main.go a2a | ||
|
|
||
| # In another terminal, connect as client | ||
| go run ./examples/a2a/main.go a2a --client |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Won't work. But something similar might be useful.
|
|
||
| ```bash | ||
| # Start the A2A server | ||
| go run ./examples/a2a/main.go a2a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
a2a => web a2a
| **Run it:** | ||
|
|
||
| ```bash | ||
| go run ./examples/web/main.go webui |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the goal is to bring up REST API with ADK WebUI then we need both:
webui => web api webui
kdroste-google
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please review the file, the content at the moment is not 100% accurate for ADK Go.
|
|
||
| Web-based agent interface example. Demonstrates: | ||
|
|
||
| - Building web UI for agents |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All examples can be launched with web api webui arguments, not only that one
|
|
||
| ### [workflowagents/sequentialCode](./workflowagents/sequentialCode) | ||
|
|
||
| Code-defined sequential workflow (vs configuration-based). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually it is a sequential workflow which writes code
| ```go | ||
| l := full.NewLaucher() | ||
| l := full.NewLauncher() | ||
| err = l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If you don't need special handling of unparsed arguments you should use Execute instead of ParseAndRun
|
|
||
| - `GOOGLE_API_KEY`: Gemini API key for model access | ||
| - `GOOGLE_CLOUD_PROJECT`: GCP project ID (for Vertex AI) | ||
| - `PORT`: Server port (default: 8080) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not really, You may specify port for web launcher.