-
Notifications
You must be signed in to change notification settings - Fork 620
Add AI integration tests #7038
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
Add AI integration tests #7038
Conversation
Firebase AI Mock Responses Check
|
📝 PRs merging into main branchOur main branch should always be in a releasable state. If you are working on a larger change, or if you don't want this change to see the light of the day just yet, consider using a feature branch first, and only merge into the main branch when the code complete and ready to be released. |
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.
Summary of Changes
Hello @emilypgoogle, 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 introduces a comprehensive suite of integration tests for the AI module, covering core functionalities like content generation, token counting, and tool usage. It also includes a minor but important fix to improve the robustness of the CountTokensResponse
type by making a field nullable to prevent crashes.
Highlights
- New Integration Test Suite: I've added a comprehensive suite of integration tests for the AI module, including
AiIntegrationTests
,CountTokensTests
,GenerateContentTests
, andToolTests
, to validate core functionalities. - Core AI Functionality Testing: The new tests cover basic content generation, multi-modal content handling (text and images), and various
countTokens
scenarios, ensuring the AI model behaves as expected. - Advanced Tooling/Function Calling Tests: I've included robust tests for the AI model's function calling capabilities, covering interpretation of prompts, correct argument passing to declared functions, and chained tool calls.
- Test Utility Setup: I introduced
AIModels.kt
to centralize the initialization and access ofFirebaseApp
andGenerativeModel
instances, streamlining test setup. - Build Configuration Update: I modified
firebase-ai.gradle.kts
to includesrc/testUtil
in theandroidTest
source set, which enables shared test utilities to be used within instrumented tests. - Robustness Improvement: I updated
CountTokensResponse
to make thetotalTokens
field nullable in its internal representation, allowing it to gracefully handle API responses where this field might be absent and preventing potential crashes.
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.
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
-
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. ↩
Generated by 🚫 Danger |
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
The pull request introduces integration tests for the Firebase AI SDK, covering content generation, token counting, and tool usage. It also modifies CountTokensResponse.Internal
to enhance robustness. The review focuses on the correctness and reliability of the new tests and the safety of the type modification. Identified issues include a potential NullPointerException, IndexOutOfBoundsException, and incomplete test.
firebase-ai/src/androidTest/kotlin/com/google/firebase/ai/TypesValidator.kt
Outdated
Show resolved
Hide resolved
firebase-ai/src/androidTest/kotlin/com/google/firebase/ai/GenerateContentTests.kt
Outdated
Show resolved
Hide resolved
firebase-ai/src/androidTest/kotlin/com/google/firebase/ai/AIModels.kt
Outdated
Show resolved
Hide resolved
Test Results 24 files - 1 034 24 suites - 1 034 37s ⏱️ - 35m 15s Results for commit 21ff798. ± Comparison against base commit f08e0c7. This pull request removes 5883 tests.
♻️ This comment has been updated with latest results. |
Coverage Report 1Affected ProductsNo changes between base commit (3b7bfef) and merge commit (74ef93b).Test Logs |
Size Report 1Affected Products
Test Logs |
Currently lacking mechanism to get API key from GitHub workflow and the workflow to regularly run the tests.
This functionality will be added in a follow up PR.
Includes a modification to an internal serializable type to better interact with failure cases and prevent crashes.