Skip to content

Conversation

@appleboy
Copy link
Contributor

@appleboy 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]>
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @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 examples/README.md. The update aims to provide a much clearer and more comprehensive guide, making it easier for developers to understand, run, and contribute to the various ADK Go examples. This will improve the onboarding experience and overall usability of the example suite.

Highlights

  • Comprehensive README Revamp: The examples/README.md has been completely rewritten and expanded to offer a detailed guide for all ADK Go examples, significantly improving its clarity and completeness.
  • Enhanced Navigation & Usage: A new Table of Contents, detailed 'Getting Started' instructions, and categorized examples (Basic, Integration, Tool, Workflow Agent, Advanced) have been added to improve discoverability and ease of use.
  • Clear Launcher System Explanation: The documentation now clearly distinguishes between full.NewLauncher() and prod.NewLauncher(), outlining their supported modes (console, restapi, a2a, webui) and use cases.
  • New Guidance Sections: New sections have been introduced covering common patterns (environment variables, configuration), contributing guidelines for new examples, and additional resources for further learning.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a 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()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

There appears to be a typo in the function name. Based on the source file cmd/launcher/prod/prod.go, the function is named NewLaucher, not NewLauncher. The example code as written will fail to compile.

Suggested change
l := prod.NewLauncher()
l := prod.NewLaucher()

```go
l := full.NewLaucher()
l := full.NewLauncher()
err = l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Suggested change
err = l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs)
err = l.Execute(ctx, config, os.Args[1:])

Copy link
Collaborator

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())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The method FormatSyntax appears to be outdated. All current examples in the repository use CommandLineSyntax to display help text on error.

Suggested change
log.Fatalf("run failed: %v\n\n%s", err, l.FormatSyntax())
log.Fatalf("run failed: %v\n\n%s", err, l.CommandLineSyntax())

l := full.NewLauncher()

// 3. Parse and run
err := l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Suggested change
err := l.ParseAndRun(ctx, config, os.Args[1:], universal.ErrorOnUnparsedArgs)
err := l.Execute(ctx, config, os.Args[1:])

@appleboy
Copy link
Contributor Author

@dpasiukevich Any feedback?

go run ./examples/<example-name>/main.go console

# Run with REST API server
go run ./examples/<example-name>/main.go restapi
Copy link
Collaborator

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
Copy link
Collaborator

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
Copy link
Collaborator

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
Copy link
Collaborator

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
Copy link
Collaborator

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
Copy link
Collaborator

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

Copy link
Collaborator

@kdroste-google kdroste-google left a 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
Copy link
Collaborator

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).
Copy link
Collaborator

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)
Copy link
Collaborator

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)
Copy link
Collaborator

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants