Skip to content

Conversation

@TejasGhatte
Copy link
Collaborator

@TejasGhatte TejasGhatte commented Dec 20, 2025

Summary

Add support for fine-tuned Gemini models in Vertex AI by enabling custom models with numeric IDs to use the Gemini API endpoints.

Changes

  • Added a new utility function getCompleteURLForGeminiEndpoint to centralize URL construction logic for both standard Gemini models and custom/fine-tuned models
  • Modified the code to treat numeric model IDs (custom/fine-tuned models) similar to Gemini models for request handling
  • Updated endpoint URLs for custom models to use the :generateContent and :streamGenerateContent methods instead of /chat/completions
  • Added proper validation for project number when using fine-tuned models
  • Implemented consistent URL construction across all relevant methods (ChatCompletion, ChatCompletionStream, Responses, ResponsesStream)

Type of change

  • Feature
  • Refactor

Affected areas

  • Core (Go)
  • Providers/Integrations

How to test

# Test with a standard Gemini model
curl -X POST "http://localhost:8080/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer vertex.PROJECT_ID.REGION.API_KEY" \
  -d '{
    "model": "gemini-1.5-pro",
    "messages": [{"role": "user", "content": "Hello, how are you?"}]
  }'

# Test with a fine-tuned Gemini model (numeric ID)
curl -X POST "http://localhost:8080/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer vertex.PROJECT_ID.REGION.API_KEY.PROJECT_NUMBER" \
  -d '{
    "model": "1234567890123456789",
    "messages": [{"role": "user", "content": "Hello, how are you?"}]
  }'

Breaking changes

  • No

Related issues

Enables support for fine-tuned Gemini models in Vertex AI

Security considerations

No new security implications. The code continues to use the existing authentication mechanisms.

Checklist

  • I added/updated tests where appropriate
  • I verified builds succeed (Go and UI)

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 20, 2025

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Summary by CodeRabbit

  • Bug Fixes
    • Improved endpoint routing and validation for Gemini and custom-tuned model deployments across streaming and non-streaming paths.
    • Enhanced regional and global endpoint handling with better project configuration validation for streaming operations.
    • Unified endpoint construction for improved consistency in model request handling.

✏️ Tip: You can customize this high-level summary in your review settings.

Walkthrough

Adds a Gemini endpoint URL builder and routes Gemini and all-digit deployments (AllDigitsASCII) through it across ChatCompletion, ChatCompletionStream, Responses, and ResponsesStream; switches those paths to use generateContent/streamGenerateContent URL patterns and adds project-number validation for digit-only deployments.

Changes

Cohort / File(s) Summary
Gemini endpoint utility
core/providers/vertex/utils.go
Adds getCompleteURLForGeminiEndpoint(deployment, region, projectID, projectNumber, isStreaming) to build full Gemini endpoint URLs, handling digit-only (custom/fine-tuned) vs named Gemini deployments, global vs regional domains, and selecting :generateContent or :streamGenerateContent.
Vertex provider routing & auth
core/providers/vertex/vertex.go
Routes Gemini and AllDigitsASCII deployments through the new helper across ChatCompletion, ChatCompletionStream, Responses, and ResponsesStream; replaces previous hard-coded chat endpoints with generateContent-style endpoints; adds project-number validation for numeric deployments (streaming especially); centralizes auth selection (API key query vs Bearer token).

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

  • Verify all call sites (ChatCompletion, ChatCompletionStream, Responses, ResponsesStream) consistently use getCompleteURLForGeminiEndpoint.
  • Check project-number validation paths and returned errors for numeric deployments, particularly in streaming flows.
  • Inspect authentication handling to ensure API keys vs OAuth Bearer tokens are applied correctly and not duplicated or leaked.
  • Confirm correctness of global vs regional URL formats and the selection between :generateContent and :streamGenerateContent.

Poem

🐇 I bounded through bytes and URL trails,
Swapped chat for generate where logic prevails.
Digits counted, tokens tidy and neat,
Streams now hum with a single heartbeat.
Carrot-coded cheers — a routing feat! 🥕

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The description includes all required sections: Summary, Changes, Type of change, Affected areas, How to test, Breaking changes, Related issues, Security considerations, and Checklist.
Title check ✅ Passed The title accurately describes the main change: refactoring Vertex AI provider to use Gemini endpoints for fine-tuned models with numeric IDs.

📜 Recent review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2cf99d2 and a70af60.

📒 Files selected for processing (2)
  • core/providers/vertex/utils.go
  • core/providers/vertex/vertex.go

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Contributor

🧪 Test Suite Available

This PR can be tested by a repository admin.

Run tests for PR #1144

@TejasGhatte TejasGhatte marked this pull request as ready for review December 20, 2025 19:42
@TejasGhatte TejasGhatte changed the title refactor: use gemini endpoint for fine tuned models in vertex [DO NOT MERGE] refactor: use gemini endpoint for fine tuned models in vertex Dec 20, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
core/providers/vertex/vertex.go (1)

1040-1050: Duplicate ModelDeployment assignment.

Lines 1040-1042 and 1048-1050 perform the same assignment. One of these can be removed.

🔎 Proposed fix
 		response.ExtraFields.Latency = latency.Milliseconds()
 
-		if request.Model != deployment {
-			response.ExtraFields.ModelDeployment = deployment
-		}
-
 		// Set raw response if enabled
 		if providerUtils.ShouldSendBackRawResponse(ctx, provider.sendBackRawResponse) {
 			response.ExtraFields.RawResponse = rawResponse
 		}
 		if request.Model != deployment {
 			response.ExtraFields.ModelDeployment = deployment
 		}
🧹 Nitpick comments (2)
core/providers/vertex/utils.go (1)

88-110: Well-designed helper function for URL construction.

The function correctly:

  • Distinguishes custom/fine-tuned models (all-digits) from standard Gemini models
  • Uses appropriate API versions (v1beta1 for custom, v1 for Gemini)
  • Handles both global and regional endpoints
  • Selects proper method suffix for streaming vs non-streaming

One observation: this helper is used in ChatCompletionStream, Responses, and ResponsesStream, but the non-streaming ChatCompletion method constructs URLs inline (lines 385-388 in vertex.go). Consider refactoring ChatCompletion to use this helper for consistency.

core/providers/vertex/vertex.go (1)

375-418: Inconsistent URL construction — consider using the helper function.

The ChatCompletion method constructs URLs inline for fine-tuned models (lines 385-388) and Gemini models (lines 409-412), while ChatCompletionStream, Responses, and ResponsesStream use getCompleteURLForGeminiEndpoint. This creates potential for drift and makes maintenance harder.

🔎 Proposed refactor to use the helper
 	if schemas.IsAllDigitsASCII(deployment) {
-		// Custom Fine-tuned models use OpenAPI endpoint
 		projectNumber := key.VertexKeyConfig.ProjectNumber
 		if projectNumber == "" {
 			return nil, providerUtils.NewConfigurationError("project number is not set for fine-tuned models", providerName)
 		}
 		if key.Value != "" {
 			authQuery = fmt.Sprintf("key=%s", url.QueryEscape(key.Value))
 		}
-		if region == "global" {
-			completeURL = fmt.Sprintf("https://aiplatform.googleapis.com/v1beta1/projects/%s/locations/global/endpoints/%s:generateContent", projectNumber, deployment)
-		} else {
-			completeURL = fmt.Sprintf("https://%s-aiplatform.googleapis.com/v1beta1/projects/%s/locations/%s/endpoints/%s:generateContent", region, projectNumber, region, deployment)
-		}
+		completeURL = getCompleteURLForGeminiEndpoint(deployment, region, projectID, projectNumber, false)
 	} else if schemas.IsAnthropicModel(deployment) {
 		// ... unchanged ...
 	} else if schemas.IsGeminiModel(deployment) {
-		// Gemini models support api key
 		if key.Value != "" {
 			authQuery = fmt.Sprintf("key=%s", url.QueryEscape(key.Value))
 		}
-		if region == "global" {
-			completeURL = fmt.Sprintf("https://aiplatform.googleapis.com/v1/projects/%s/locations/global/publishers/google/models/%s:generateContent", projectID, deployment)
-		} else {
-			completeURL = fmt.Sprintf("https://%s-aiplatform.googleapis.com/v1/projects/%s/locations/%s/publishers/google/models/%s:generateContent", region, projectID, region, deployment)
-		}
+		completeURL = getCompleteURLForGeminiEndpoint(deployment, region, projectID, "", false)
 	} else {
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 47fe4ed and 05d0e57.

📒 Files selected for processing (2)
  • core/providers/vertex/utils.go (1 hunks)
  • core/providers/vertex/vertex.go (10 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

always check the stack if there is one for the current PR. do not give localized reviews for the PR, always see all changes in the light of the whole stack of PRs (if there is a stack, if there is no stack you can continue to make localized suggestions/reviews)

Files:

  • core/providers/vertex/utils.go
  • core/providers/vertex/vertex.go
🧠 Learnings (2)
📚 Learning: 2025-12-09T17:07:42.007Z
Learnt from: qwerty-dvorak
Repo: maximhq/bifrost PR: 1006
File: core/schemas/account.go:9-18
Timestamp: 2025-12-09T17:07:42.007Z
Learning: In core/schemas/account.go, the HuggingFaceKeyConfig field within the Key struct is currently unused and reserved for future Hugging Face inference endpoint deployments. Do not flag this field as missing from OpenAPI documentation or require its presence in the API spec until the feature is actively implemented and used. When the feature is added, update the OpenAPI docs accordingly; otherwise, treat this field as non-breaking and not part of the current API surface.

Applied to files:

  • core/providers/vertex/utils.go
  • core/providers/vertex/vertex.go
📚 Learning: 2025-12-19T09:26:54.961Z
Learnt from: qwerty-dvorak
Repo: maximhq/bifrost PR: 1006
File: core/providers/utils/utils.go:1050-1051
Timestamp: 2025-12-19T09:26:54.961Z
Learning: Update streaming end-marker handling so HuggingFace is treated as a non-[DONE] provider for backends that do not emit a DONE marker (e.g., meta llama on novita). In core/providers/utils/utils.go, adjust ProviderSendsDoneMarker() (or related logic) to detect providers that may not emit DONE and avoid relying on DONE as the sole end signal. Add tests to cover both DONE-emitting and non-DONE backends, with clear documentation in code comments explaining the rationale and any fallback behavior.

Applied to files:

  • core/providers/vertex/utils.go
  • core/providers/vertex/vertex.go
🧬 Code graph analysis (2)
core/providers/vertex/utils.go (1)
core/schemas/utils.go (1)
  • IsAllDigitsASCII (39-50)
core/providers/vertex/vertex.go (3)
core/schemas/utils.go (3)
  • IsGeminiModel (1057-1059)
  • IsAllDigitsASCII (39-50)
  • IsMistralModel (1053-1055)
core/schemas/account.go (1)
  • VertexKeyConfig (32-38)
core/providers/utils/utils.go (1)
  • NewConfigurationError (762-772)
🔇 Additional comments (6)
core/providers/vertex/vertex.go (6)

314-329: LGTM!

Correctly extends the Gemini model handling to include all-digits (fine-tuned) deployments, ensuring they use the appropriate Gemini request format.


505-530: LGTM!

Correctly extends Gemini response parsing to include fine-tuned model responses.


678-754: LGTM!

The streaming path correctly:

  • Extends Gemini handling to fine-tuned models
  • Validates projectNumber is set for fine-tuned models
  • Uses getCompleteURLForGeminiEndpoint helper for consistent URL construction
  • Properly handles auth via query parameter or OAuth2 token

755-778: LGTM!

The else branch now correctly handles only Mistral and other OpenAPI-compatible models, since fine-tuned models are routed through the Gemini streaming path above.


937-977: LGTM!

The Responses method correctly:

  • Routes fine-tuned models through Gemini handling
  • Validates projectNumber for fine-tuned models
  • Uses the centralized URL helper

1160-1253: LGTM!

The ResponsesStream method correctly:

  • Routes fine-tuned models through Gemini streaming handling
  • Validates projectNumber for fine-tuned models
  • Uses the centralized URL helper
  • Handles auth consistently with other streaming methods

@TejasGhatte TejasGhatte changed the title [DO NOT MERGE] refactor: use gemini endpoint for fine tuned models in vertex refactor: use gemini endpoint for fine tuned models in vertex Dec 22, 2025
@TejasGhatte TejasGhatte force-pushed the 12-21-refactor_use_gemini_endpoint_for_fine_tuned_models_in_vertex branch from 05d0e57 to 7b68adf Compare December 22, 2025 11:42
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 05d0e57 and 7b68adf.

📒 Files selected for processing (2)
  • core/providers/vertex/utils.go
  • core/providers/vertex/vertex.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • core/providers/vertex/vertex.go
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

always check the stack if there is one for the current PR. do not give localized reviews for the PR, always see all changes in the light of the whole stack of PRs (if there is a stack, if there is no stack you can continue to make localized suggestions/reviews)

Files:

  • core/providers/vertex/utils.go
🧠 Learnings (2)
📚 Learning: 2025-12-09T17:07:42.007Z
Learnt from: qwerty-dvorak
Repo: maximhq/bifrost PR: 1006
File: core/schemas/account.go:9-18
Timestamp: 2025-12-09T17:07:42.007Z
Learning: In core/schemas/account.go, the HuggingFaceKeyConfig field within the Key struct is currently unused and reserved for future Hugging Face inference endpoint deployments. Do not flag this field as missing from OpenAPI documentation or require its presence in the API spec until the feature is actively implemented and used. When the feature is added, update the OpenAPI docs accordingly; otherwise, treat this field as non-breaking and not part of the current API surface.

Applied to files:

  • core/providers/vertex/utils.go
📚 Learning: 2025-12-19T09:26:54.961Z
Learnt from: qwerty-dvorak
Repo: maximhq/bifrost PR: 1006
File: core/providers/utils/utils.go:1050-1051
Timestamp: 2025-12-19T09:26:54.961Z
Learning: Update streaming end-marker handling so HuggingFace is treated as a non-[DONE] provider for backends that do not emit a DONE marker (e.g., meta llama on novita). In core/providers/utils/utils.go, adjust ProviderSendsDoneMarker() (or related logic) to detect providers that may not emit DONE and avoid relying on DONE as the sole end signal. Add tests to cover both DONE-emitting and non-DONE backends, with clear documentation in code comments explaining the rationale and any fallback behavior.

Applied to files:

  • core/providers/vertex/utils.go
🧬 Code graph analysis (1)
core/providers/vertex/utils.go (1)
core/schemas/utils.go (1)
  • IsAllDigitsASCII (39-50)
🔇 Additional comments (2)
core/providers/vertex/utils.go (2)

94-100: LGTM! Custom model URL construction follows Vertex AI conventions.

The URL construction logic correctly:

  • Uses projectNumber for custom/fine-tuned models (numeric deployment IDs)
  • Uses the v1beta1 API version appropriate for custom endpoints
  • Handles global vs regional endpoint patterns correctly
  • Includes the appropriate method suffix for generateContent operations

101-108: LGTM! Gemini model URL construction follows Google's API conventions.

The URL construction correctly:

  • Uses projectID for standard Gemini models
  • Uses the stable v1 API version
  • Includes the proper /publishers/google/models/ path segment
  • Handles global and regional endpoint patterns correctly

The different API versions (v1 for Gemini vs v1beta1 for custom models) align with Google's Vertex AI API structure.

@TejasGhatte TejasGhatte force-pushed the 12-21-refactor_use_gemini_endpoint_for_fine_tuned_models_in_vertex branch from 7b68adf to 2cf99d2 Compare December 22, 2025 12:41
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
core/providers/vertex/vertex.go (1)

1040-1050: Duplicate ModelDeployment assignment.

The ModelDeployment field is set at lines 1040-1041 and again at lines 1048-1050. Remove the duplicate.

🔎 Proposed fix
 		if request.Model != deployment {
 			response.ExtraFields.ModelDeployment = deployment
 		}

 		// Set raw response if enabled
 		if providerUtils.ShouldSendBackRawResponse(ctx, provider.sendBackRawResponse) {
 			response.ExtraFields.RawResponse = rawResponse
 		}
-		if request.Model != deployment {
-			response.ExtraFields.ModelDeployment = deployment
-		}

 		if providerUtils.ShouldSendBackRawRequest(ctx, provider.sendBackRawRequest) {
 			response.ExtraFields.RawRequest = rawRequest
 		}
🧹 Nitpick comments (1)
core/providers/vertex/vertex.go (1)

375-418: Consider using getCompleteURLForGeminiEndpoint helper for consistency.

The ChatCompletion method constructs URLs inline for both fine-tuned (AllDigitsASCII) and Gemini models, while ChatCompletionStream, Responses, and ResponsesStream use the centralized getCompleteURLForGeminiEndpoint helper. This inconsistency may lead to maintenance burden if URL patterns change.

🔎 Suggested refactor for AllDigitsASCII and Gemini branches
-	if schemas.IsAllDigitsASCII(deployment) {
-		// Custom Fine-tuned models use OpenAPI endpoint
-		projectNumber := key.VertexKeyConfig.ProjectNumber
-		if projectNumber == "" {
-			return nil, providerUtils.NewConfigurationError("project number is not set for fine-tuned models", providerName)
-		}
-		if key.Value != "" {
-			authQuery = fmt.Sprintf("key=%s", url.QueryEscape(key.Value))
-		}
-		if region == "global" {
-			completeURL = fmt.Sprintf("https://aiplatform.googleapis.com/v1beta1/projects/%s/locations/global/endpoints/%s:generateContent", projectNumber, deployment)
-		} else {
-			completeURL = fmt.Sprintf("https://%s-aiplatform.googleapis.com/v1beta1/projects/%s/locations/%s/endpoints/%s:generateContent", region, projectNumber, region, deployment)
-		}
-	} else if schemas.IsAnthropicModel(deployment) {
+	if schemas.IsAllDigitsASCII(deployment) || schemas.IsGeminiModel(deployment) {
+		// Fine-tuned models require project number validation
+		projectNumber := key.VertexKeyConfig.ProjectNumber
+		if schemas.IsAllDigitsASCII(deployment) && projectNumber == "" {
+			return nil, providerUtils.NewConfigurationError("project number is not set for fine-tuned models", providerName)
+		}
+		// Gemini and fine-tuned models support API key auth
+		if key.Value != "" {
+			authQuery = fmt.Sprintf("key=%s", url.QueryEscape(key.Value))
+		}
+		completeURL = getCompleteURLForGeminiEndpoint(deployment, region, projectID, projectNumber, false)
+	} else if schemas.IsAnthropicModel(deployment) {
		// ... existing Anthropic handling
-	} else if schemas.IsGeminiModel(deployment) {
-		// Gemini models support api key
-		if key.Value != "" {
-			authQuery = fmt.Sprintf("key=%s", url.QueryEscape(key.Value))
-		}
-		if region == "global" {
-			completeURL = fmt.Sprintf("https://aiplatform.googleapis.com/v1/projects/%s/locations/global/publishers/google/models/%s:generateContent", projectID, deployment)
-		} else {
-			completeURL = fmt.Sprintf("https://%s-aiplatform.googleapis.com/v1/projects/%s/locations/%s/publishers/google/models/%s:generateContent", region, projectID, region, deployment)
-		}
-	} else {
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7b68adf and 2cf99d2.

📒 Files selected for processing (2)
  • core/providers/vertex/utils.go
  • core/providers/vertex/vertex.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • core/providers/vertex/utils.go
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

always check the stack if there is one for the current PR. do not give localized reviews for the PR, always see all changes in the light of the whole stack of PRs (if there is a stack, if there is no stack you can continue to make localized suggestions/reviews)

Files:

  • core/providers/vertex/vertex.go
🧠 Learnings (2)
📚 Learning: 2025-12-09T17:07:42.007Z
Learnt from: qwerty-dvorak
Repo: maximhq/bifrost PR: 1006
File: core/schemas/account.go:9-18
Timestamp: 2025-12-09T17:07:42.007Z
Learning: In core/schemas/account.go, the HuggingFaceKeyConfig field within the Key struct is currently unused and reserved for future Hugging Face inference endpoint deployments. Do not flag this field as missing from OpenAPI documentation or require its presence in the API spec until the feature is actively implemented and used. When the feature is added, update the OpenAPI docs accordingly; otherwise, treat this field as non-breaking and not part of the current API surface.

Applied to files:

  • core/providers/vertex/vertex.go
📚 Learning: 2025-12-19T09:26:54.961Z
Learnt from: qwerty-dvorak
Repo: maximhq/bifrost PR: 1006
File: core/providers/utils/utils.go:1050-1051
Timestamp: 2025-12-19T09:26:54.961Z
Learning: Update streaming end-marker handling so HuggingFace is treated as a non-[DONE] provider for backends that do not emit a DONE marker (e.g., meta llama on novita). In core/providers/utils/utils.go, adjust ProviderSendsDoneMarker() (or related logic) to detect providers that may not emit DONE and avoid relying on DONE as the sole end signal. Add tests to cover both DONE-emitting and non-DONE backends, with clear documentation in code comments explaining the rationale and any fallback behavior.

Applied to files:

  • core/providers/vertex/vertex.go
🧬 Code graph analysis (1)
core/providers/vertex/vertex.go (2)
core/schemas/utils.go (3)
  • IsGeminiModel (1057-1059)
  • IsAllDigitsASCII (39-50)
  • IsMistralModel (1053-1055)
core/schemas/account.go (1)
  • VertexKeyConfig (32-38)
🔇 Additional comments (6)
core/providers/vertex/vertex.go (6)

314-329: LGTM!

The condition correctly routes fine-tuned models (all-digit deployment IDs) through the Gemini request formatting path, which aligns with the PR objective.


505-530: LGTM!

The response handling correctly parses fine-tuned model responses using the Gemini response format, consistent with the request path.


704-711: LGTM!

The project number validation and centralized URL construction via getCompleteURLForGeminiEndpoint are correctly implemented. The conditional validation ensures projectNumber is only required for fine-tuned models.


755-778: LGTM!

The else branch correctly handles Mistral and other OpenAI-compatible models after moving fine-tuned model handling to the Gemini branch.


971-977: LGTM!

Project number validation and URL construction are correctly implemented for the Responses method, consistent with the streaming methods.


1196-1203: LGTM!

The ResponsesStream implementation correctly validates project number for fine-tuned models and uses the centralized URL helper, maintaining consistency across all streaming methods.

@TejasGhatte TejasGhatte changed the title refactor: use gemini endpoint for fine tuned models in vertex refactor: use gemini endpoint for fine tuned models in vertex --skip-pipeline Dec 22, 2025
Copy link
Collaborator

Pratham-Mishra04 commented Dec 22, 2025

Merge activity

  • Dec 22, 4:04 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Dec 22, 4:05 PM UTC: Graphite rebased this pull request as part of a merge.
  • Dec 22, 4:06 PM UTC: @Pratham-Mishra04 merged this pull request with Graphite.

@Pratham-Mishra04 Pratham-Mishra04 force-pushed the 12-21-refactor_use_gemini_endpoint_for_fine_tuned_models_in_vertex branch from 2cf99d2 to a70af60 Compare December 22, 2025 16:05
@Pratham-Mishra04 Pratham-Mishra04 merged commit 05cc7c2 into main Dec 22, 2025
8 of 9 checks passed
@Pratham-Mishra04 Pratham-Mishra04 deleted the 12-21-refactor_use_gemini_endpoint_for_fine_tuned_models_in_vertex branch December 22, 2025 16:06
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.

3 participants