Skip to content

[FirebaseAI] Add support for Grounding with Google Search #15014

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

Open
wants to merge 10 commits into
base: main
Choose a base branch
from

Conversation

dlarocque
Copy link

@dlarocque dlarocque commented Jun 20, 2025

API Proposal: go/fal-grounding-api (internal)

  • Added GoogleSearch tool and .googleSearch() static initializer
  • Added GroundingMetadata and related structs to store grounded results

Copy link
Contributor

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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

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 issue 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 is currently in preview and 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 to provide feedback.

@dlarocque dlarocque marked this pull request as ready for review June 20, 2025 19:44
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

The pull request introduces support for Grounding with Google Search, including new data structures and tool configurations. The changes include updates to the CHANGELOG, modifications to the GenerateContentResponse and Tool files, and the addition of new unit tests. The code appears well-structured and includes appropriate documentation.

@@ -1,4 +1,4 @@
// Copyright 2024 Google LLC
// Copyright 2025 Google LLC
Copy link
Contributor

Choose a reason for hiding this comment

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

low

Updating the copyright year is a good practice to keep the project up-to-date.

Copy link
Contributor

Choose a reason for hiding this comment

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

nit: Since this file was renamed I think we should keep the year as 2024.

Copy link
Member

Choose a reason for hiding this comment

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

Gemini's comment is NOT standard Google policy for existing files.

Copy link
Contributor

@andrewheard andrewheard left a comment

Choose a reason for hiding this comment

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

Just did a quick pass before heading out. Looking good so far, just nits!

Copy link
Member

@paulb777 paulb777 left a comment

Choose a reason for hiding this comment

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

LGTM, and will defer to @andrewheard for approval

Do all of the new optional fields need to be optional?

Separate from this PR, this feature should be added to https://github.com/firebase/quickstart-ios/tree/main/firebaseai to show an example of complying with the UI requirements.

@@ -1,4 +1,4 @@
// Copyright 2024 Google LLC
// Copyright 2025 Google LLC
Copy link
Member

Choose a reason for hiding this comment

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

Gemini's comment is NOT standard Google policy for existing files.

@dlarocque dlarocque requested a review from andrewheard June 23, 2025 15:57
/// undesired interaction with the rest of the page's CSS.
///
/// To ensure proper rendering, it's recommended to display this content within a `WKWebView`.
public let renderedContent: String?
Copy link
Contributor

Choose a reason for hiding this comment

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

Do all of the new optional fields need to be optional?
-- @paulb777

I think it's likely that renderedContent will always be non-nil when GroundingMetadata.searchEntryPoint is not nil. We could consider making this non-optional.

Copy link
Author

@dlarocque dlarocque Jun 26, 2025

Choose a reason for hiding this comment

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

If we are re-evaluating mirroring the protos for this, we should make this non-optional.

Displaying a grounded result without displaying renderedContent is a violation of the service terms. To prevent this from happening, we should throw an error if renderedContent is nil.

Thoughts? @andrewheard @paulb777

Copy link
Member

Choose a reason for hiding this comment

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

Failing early when the service terms can't be met SGTM

Comment on lines +394 to +396
/// Specifies the segment of the model's response content that this grounding support pertains
/// to.
public let segment: Segment?
Copy link
Contributor

Choose a reason for hiding this comment

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

Do all of the new optional fields need to be optional?
-- @paulb777

Based on the documentation for GroundingSupport above

Provides information about how a specific segment of the model's response is supported by the retrieved grounding chunks.

Does it make sense for a developer to ever get a GroundingSupport where segment is nil?

Copy link
Author

Choose a reason for hiding this comment

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

Good point. It does not make sense for a developer to get a GroundingSupport where segment is nil.

This should be non-optional, and we should remove the GroundingSupport from the GroundingMetadata.groundingSupports list if it's segment is missing.

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

Successfully merging this pull request may close these issues.

4 participants