0xPlaygrounds / 0xPlaygrounds/rig

feat: Use gRPC APIs for Gemini + xAI

Abierto
#1,201 8 comentarios 5 reacciones 0 asignados Ver en GitHub
feat
Lenguaje dominante
Rust
Estrellas
8.6k
Forks
959
Merge medio
4 h 32 min
PR fusionados (30 d)
117

Descripción

## Feature Request
Use the gRPC API for the Rig model providers that expose gRPC APIs (currently Google (Gemini Direct API) and xAI)

Docs + proto sources:
- Google Gemini Direct API (REST/gRPC) docs:
- https://ai.google.dev/gemini-api/docs/partner-integration
- Google proto source (Gemini / Generative Language API):
- https://github.com/googleapis/googleapis/blob/master/google/ai/generativelanguage/v1beta/generative_service.proto
- xAI gRPC docs + proto sources:
- https://docs.x.ai/docs/grpc-reference
- https://github.com/xai-org/xai-proto
- https://github.com/xai-org/xai-proto/blob/736b835b0c0dd93698664732daad49f87a2fbc6f/proto/xai/api/v1/chat.proto

### Motivation
- Protobuf is strongly typed, more performant to de/serialize than JSON, smaller than JSON, easy to generate via the `tonic` crate and backwards compatible

### Proposal
- Use the gRPC backend for the existing `gemini` and `xai` providers instead of the current REST backend
- Implementation outline:
- Use `tonic` + `prost` (or equivalent) to generate clients from the upstream protos.
- Google:
- Generate a client for `google.ai.generativelanguage.v1beta.GenerativeService` from the googleapis proto.
- Attach `x-goog-api-key` (and optionally `x-goog-api-client` for identification) metadata headers.
- xAI:
- Generate clients from `xai-org/xai-proto` and connect to `api.x.ai` with `Authorization: Bearer ` metadata.
- Map Rig’s existing request/response types to/from the proto messages; preserve existing streaming APIs (`stream_prompt`, etc.) by adapting gRPC streaming responses into Rig’s stream types.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

The issue requires generating gRPC clients from the provided proto files for Google Gemini and xAI using the `tonic` and `prost` crates. Start by examining the existing `gemini` and `xai` provider implementations in the codebase to understand the current REST API integration. Then, map Rig's request/response types to the generated proto messages, ensuring streaming support is maintained. Testing will involve verifying the new gRPC connections work with the respective authentication headers.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
grpc, rust
Área
ai-infra-agents, api, backend
Tipo de issue
Nueva funcionalidad
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
40/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.