mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-11 22:51:26 +00:00
Merge pull request #1392 from eonghk/feature/vertex-credentials-auth
Add credentials auth for Google vertex
This commit is contained in:
commit
70a88aee4d
5 changed files with 82 additions and 9 deletions
5
.changeset/tame-carpets-bake.md
Normal file
5
.changeset/tame-carpets-bake.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
"roo-cline": patch
|
||||
---
|
||||
|
||||
Add credentials auth for Google vertex
|
||||
|
|
@ -11,6 +11,7 @@ import { BaseProvider } from "./base-provider"
|
|||
|
||||
import { ANTHROPIC_DEFAULT_MAX_TOKENS } from "./constants"
|
||||
import { getModelParams, SingleCompletionHandler } from "../"
|
||||
import { GoogleAuth } from "google-auth-library"
|
||||
|
||||
// Types for Vertex SDK
|
||||
|
||||
|
|
@ -120,16 +121,56 @@ export class VertexHandler extends BaseProvider implements SingleCompletionHandl
|
|||
throw new Error(`Unknown model ID: ${this.options.apiModelId}`)
|
||||
}
|
||||
|
||||
this.anthropicClient = new AnthropicVertex({
|
||||
projectId: this.options.vertexProjectId ?? "not-provided",
|
||||
// https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude#regions
|
||||
region: this.options.vertexRegion ?? "us-east5",
|
||||
})
|
||||
if (this.options.vertexJsonCredentials) {
|
||||
this.anthropicClient = new AnthropicVertex({
|
||||
projectId: this.options.vertexProjectId ?? "not-provided",
|
||||
// https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude#regions
|
||||
region: this.options.vertexRegion ?? "us-east5",
|
||||
googleAuth: new GoogleAuth({
|
||||
scopes: ["https://www.googleapis.com/auth/cloud-platform"],
|
||||
credentials: JSON.parse(this.options.vertexJsonCredentials),
|
||||
}),
|
||||
})
|
||||
} else if (this.options.vertexKeyFile) {
|
||||
this.anthropicClient = new AnthropicVertex({
|
||||
projectId: this.options.vertexProjectId ?? "not-provided",
|
||||
// https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude#regions
|
||||
region: this.options.vertexRegion ?? "us-east5",
|
||||
googleAuth: new GoogleAuth({
|
||||
scopes: ["https://www.googleapis.com/auth/cloud-platform"],
|
||||
keyFile: this.options.vertexKeyFile,
|
||||
}),
|
||||
})
|
||||
} else {
|
||||
this.anthropicClient = new AnthropicVertex({
|
||||
projectId: this.options.vertexProjectId ?? "not-provided",
|
||||
// https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude#regions
|
||||
region: this.options.vertexRegion ?? "us-east5",
|
||||
})
|
||||
}
|
||||
|
||||
this.geminiClient = new VertexAI({
|
||||
project: this.options.vertexProjectId ?? "not-provided",
|
||||
location: this.options.vertexRegion ?? "us-east5",
|
||||
})
|
||||
if (this.options.vertexJsonCredentials) {
|
||||
this.geminiClient = new VertexAI({
|
||||
project: this.options.vertexProjectId ?? "not-provided",
|
||||
location: this.options.vertexRegion ?? "us-east5",
|
||||
googleAuthOptions: {
|
||||
credentials: JSON.parse(this.options.vertexJsonCredentials),
|
||||
},
|
||||
})
|
||||
} else if (this.options.vertexKeyFile) {
|
||||
this.geminiClient = new VertexAI({
|
||||
project: this.options.vertexProjectId ?? "not-provided",
|
||||
location: this.options.vertexRegion ?? "us-east5",
|
||||
googleAuthOptions: {
|
||||
keyFile: this.options.vertexKeyFile,
|
||||
},
|
||||
})
|
||||
} else {
|
||||
this.geminiClient = new VertexAI({
|
||||
project: this.options.vertexProjectId ?? "not-provided",
|
||||
location: this.options.vertexRegion ?? "us-east5",
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private formatMessageForCache(message: Anthropic.Messages.MessageParam, shouldCache: boolean): VertexMessage {
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ export interface ApiHandlerOptions {
|
|||
awspromptCacheId?: string
|
||||
awsProfile?: string
|
||||
awsUseProfile?: boolean
|
||||
vertexKeyFile?: string
|
||||
vertexJsonCredentials?: string
|
||||
vertexProjectId?: string
|
||||
vertexRegion?: string
|
||||
openAiBaseUrl?: string
|
||||
|
|
@ -97,6 +99,8 @@ export const API_CONFIG_KEYS: GlobalStateKey[] = [
|
|||
// "awspromptCacheId", // NOT exist on GlobalStateKey
|
||||
"awsProfile",
|
||||
"awsUseProfile",
|
||||
"vertexKeyFile",
|
||||
"vertexJsonCredentials",
|
||||
"vertexProjectId",
|
||||
"vertexRegion",
|
||||
"openAiBaseUrl",
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@ export const GLOBAL_STATE_KEYS = [
|
|||
"awsUseCrossRegionInference",
|
||||
"awsProfile",
|
||||
"awsUseProfile",
|
||||
"vertexKeyFile",
|
||||
"vertexJsonCredentials",
|
||||
"vertexProjectId",
|
||||
"vertexRegion",
|
||||
"lastShownAnnouncementId",
|
||||
|
|
|
|||
|
|
@ -565,7 +565,28 @@ const ApiOptions = ({
|
|||
2. Install the Google Cloud CLI & configure application default credentials.
|
||||
</VSCodeLink>
|
||||
</div>
|
||||
<div>
|
||||
<VSCodeLink
|
||||
href="https://developers.google.com/workspace/guides/create-credentials?hl=en#service-account"
|
||||
className="text-sm">
|
||||
3. Or create a service account with credentials.
|
||||
</VSCodeLink>
|
||||
</div>
|
||||
</div>
|
||||
<VSCodeTextField
|
||||
value={apiConfiguration?.vertexJsonCredentials || ""}
|
||||
style={{ width: "100%" }}
|
||||
onInput={handleInputChange("vertexJsonCredentials")}
|
||||
placeholder="Enter Credentials JSON...">
|
||||
<span className="font-medium">Google Cloud Credentials</span>
|
||||
</VSCodeTextField>
|
||||
<VSCodeTextField
|
||||
value={apiConfiguration?.vertexKeyFile || ""}
|
||||
style={{ width: "100%" }}
|
||||
onInput={handleInputChange("vertexKeyFile")}
|
||||
placeholder="Enter Key File Path...">
|
||||
<span className="font-medium">Google Cloud Key File Path</span>
|
||||
</VSCodeTextField>
|
||||
<VSCodeTextField
|
||||
value={apiConfiguration?.vertexProjectId || ""}
|
||||
onInput={handleInputChange("vertexProjectId")}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue