Document relationship with cloud SDK genai client
Description of the feature request:
I found this library when searching for connecting to Gemini from Go. I was familiar with cloud.google.com/go/vertexai/genai and hadn't seen this yet, without thinking too much I thought perhaps it's a more idiomatic entry point to genai than the cloud SDK which are often close to auto-generated stubs (though I'm not sure this is the case for vertexai/genai specifically). But when trying to use the client with application default credentials like normal, using option.WithTokenSource, I couldn't get it to authenticate, even when trying scopes like https://www.googleapis.com/auth/generative-language. Eventually, I switched to vertexai/genai and had no problem. To my surprise, this was almost just replacing import statements, and one tweak to client initialization logic, which made me realize my hypothesis about the API being possibly more idiomatic wasn't correct.
I notice the docs for this project mention using an API key and don't mention application default credentials (yes I did try knowing the doc said "requires an API key" hoping it was a typo), other than that I'm not clear what the difference / use case for this project is. I guess my new hypothesis is it's meant to be for non-GCP users, while I've never thought to try it I guess "Google AI" is trying to be a purely AI product with decoupling from GCP. For GCP users, it's best to stick to the cloud SDK.
It would be nice to add documentation something like that, or otherwise whatever the case may be, to help prevent confusion for users that happen to find this while trying to use within GCP.
What problem are you trying to solve with this feature?
No response
Any other information you'd like to share?
No response
Thanks for the note. We're thinking about the topic of documentation more holistically now across the different SDKs and languages; I will keep this issue open for now
To elaborate on some of your observations:
-
There are two APIs because there are two products: one requires minimal auth and no GCP account; the other is designed for enterprise GCP users with GCP projects, billing, and so on. That is why the auth is different. We worked hard to make the API surfaces as close as possible.
-
We also worked hard to make them idiomatic Go, and to raise the level over direct RPCs to the service. We use the generated API as a base, then wrap protobuffers, rename, and perform other changes and additions to provide what we hope is an idiomatic and pleasant coding experience. The chat API is an example of raising the level above the raw RPCs.
Thanks @jba - I hadn't realized there's actually two APIs with similar surfaces, which is clarifying. BTW, I didn't mean to indicate the APIs aren't idiomatic, I found them easy enough to use, I was just surprised to see the match against the GCP SDK's client, which I'm used to not having such usability in other services ;)
I suspect just a line such as this at the top of the docs would help a lot. "Generative AI" is a general term so I think it's easy to expect this repo to apply to vertex AI as well and cause confusion.
This SDK is for the Google AI Studio. Google Cloud Platform Vertex AI users should use the [Google Cloud SDK](https://pkg.go.dev/cloud.google.com/go/vertexai/genai) instead.
We recommend switching to the new client, google.golang.org/genai. It exposes the same API for both the Google AI and Vertex services. You can file bugs on its issue tracker.