Skip to content

AI Hybrid Inference: extract expected inputs from prompt #8989

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 5 commits into
base: firebase-ai-hybridinference
Choose a base branch
from

Conversation

erikeldridge
Copy link

@erikeldridge erikeldridge commented May 1, 2025

Problem Statement

Vertex doesn't require callers to pre-specify expected input types. Could we make the hybrid API do the same?

Now that Edge has added support for text inputs, but not image inputs, we need to remove the default image input type, which further motivates this change.

Solution

Since the AI SDK request object contains the intended input types, we can extract those and reformat them into the format expected by Chrome.

@erikeldridge erikeldridge requested a review from a team as a code owner May 1, 2025 01:18
Copy link

changeset-bot bot commented May 1, 2025

⚠️ No Changeset found

Latest commit: dae5fee

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link
Contributor

github-actions bot commented May 1, 2025

Vertex AI Mock Responses Check ⚠️

A newer major version of the mock responses for Vertex AI unit tests is available. update_vertexai_responses.sh should be updated to clone the latest version of the responses: v11.0

@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 1, 2025

Size Report 1

Affected Products

  • @firebase/ai

    TypeBase (58d92df)Merge (feb1e52)Diff
    browser48.3 kB49.0 kB+750 B (+1.6%)
    main49.5 kB50.4 kB+945 B (+1.9%)
    module48.3 kB49.0 kB+750 B (+1.6%)
  • firebase

    TypeBase (58d92df)Merge (feb1e52)Diff
    firebase-ai.js38.1 kB40.5 kB+2.34 kB (+6.1%)
    firebase-vertexai.js38.1 kB40.5 kB+2.34 kB (+6.1%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/jpfXLGnNo2.html

@google-oss-bot
Copy link
Contributor

google-oss-bot commented May 1, 2025

Size Analysis Report 1

Affected Products

  • @firebase/ai

    • AIError

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.58 kB4.60 kB+18 B (+0.4%)
    • AIModel

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size24.3 kB24.3 kB+18 B (+0.1%)
    • ArraySchema

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size6.37 kB6.39 kB+18 B (+0.3%)
    • Backend

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.58 kB4.60 kB+18 B (+0.4%)
    • BackendType

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • BlockReason

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • BooleanSchema

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size6.37 kB6.39 kB+18 B (+0.3%)
    • ChatSession

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size20.4 kB20.5 kB+18 B (+0.1%)
    • FinishReason

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • FunctionCallingMode

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.60 kB4.61 kB+18 B (+0.4%)
    • GenerativeModel

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size24.3 kB24.3 kB+18 B (+0.1%)
    • GoogleAIBackend

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • HarmBlockMethod

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • HarmBlockThreshold

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • HarmCategory

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • HarmProbability

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • HarmSeverity

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • ImagenAspectRatio

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • ImagenImageFormat

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.87 kB4.89 kB+18 B (+0.4%)
    • ImagenModel

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size26.1 kB26.1 kB+18 B (+0.1%)
    • ImagenPersonFilterLevel

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.60 kB4.62 kB+18 B (+0.4%)
    • ImagenSafetyFilterLevel

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.60 kB4.62 kB+18 B (+0.4%)
    • IntegerSchema

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size6.37 kB6.39 kB+18 B (+0.3%)
    • Modality

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.58 kB4.60 kB+18 B (+0.4%)
    • NumberSchema

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size6.37 kB6.39 kB+18 B (+0.3%)
    • ObjectSchema

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size6.37 kB6.39 kB+18 B (+0.3%)
    • POSSIBLE_ROLES

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.64 kB4.65 kB+18 B (+0.4%)
    • ResponseModality

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.63 kB4.65 kB+18 B (+0.4%)
    • Schema

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size6.37 kB6.39 kB+18 B (+0.3%)
    • SchemaType

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.60 kB+18 B (+0.4%)
    • StringSchema

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size6.37 kB6.39 kB+18 B (+0.3%)
    • VertexAIBackend

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.59 kB4.61 kB+18 B (+0.4%)
    • VertexAIError

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.60 kB4.62 kB+18 B (+0.4%)
    • VertexAIModel

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size24.3 kB24.3 kB+18 B (+0.1%)
    • getAI

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.95 kB4.96 kB+18 B (+0.4%)
    • getGenerativeModel

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size28.0 kB28.4 kB+393 B (+1.4%)
      size-with-ext-deps47.1 kB49.1 kB+2.06 kB (+4.4%)

      External Dependency

      ModuleBase (58d92df)Merge (feb1e52)Diff
      deepmerge

      default export

      + default export

    • getImagenModel

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size26.2 kB26.2 kB+18 B (+0.1%)
    • getVertexAI

      Size

      TypeBase (58d92df)Merge (feb1e52)Diff
      size4.98 kB5.00 kB+18 B (+0.4%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/mM9vetpEqz.html

@erikeldridge erikeldridge force-pushed the erikeldridge-vertex-expectedinputs branch from 2dab7ea to e002c40 Compare June 4, 2025 23:23
@erikeldridge erikeldridge changed the base branch from vaihi-exp-google-ai to firebase-ai-hybridinference June 4, 2025 23:25
@erikeldridge erikeldridge changed the title VinF Hybrid Inference: infer expected inputs from prompt (exploration) AI Hybrid Inference: extract expected inputs from prompt Jun 4, 2025
@erikeldridge erikeldridge removed the request for review from a team June 4, 2025 23:49
// Triggers out-of-band download so model will eventually become available.
const availability = await this.downloadIfAvailable();
const availability = await this.downloadIfAvailable(mergedOptions);

Copy link
Author

Choose a reason for hiding this comment

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

I now see the same error in Edge that we used to have in Chrome when we were migrated to the new type: the LanguageModel.prompt method exists, but throws an unsupported input error with the new rich type. Edge Canary works. I'll take a look at detecting the Edge version in isAvailable.

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