Feature Request: Add async support for Generative AI Inference client
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Empieza revisando el PR #835 y el cliente síncrono existente de Generative AI Inference que usa requests. Compara el cliente async propuesto, sus 15 pruebas unitarias y 7 pruebas de integración con la compatibilidad solicitada para chat, streaming, embeddings, autenticación y context manager. Se considera terminado cuando las operaciones asíncronas solicitadas están cubiertas y las versiones de Python y los modelos indicados siguen siendo compatibles.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Feature Request
Description
Add native async/await support for the OCI Generative AI Inference client to enable non-blocking concurrent requests in async applications.
Problem Statement
The current SDK uses synchronous HTTP requests via the requests library. This causes issues in async applications:
- Event loop blocking: Sync calls block the event loop in FastAPI, async agents, and other async frameworks
- Limited concurrency: Cannot efficiently make concurrent API calls
- Performance bottleneck: Sequential requests are significantly slower than concurrent alternatives
Proposed Solution
Add an AsyncGenerativeAiInferenceClient class that:
- Uses
aiohttpfor true async HTTP requests - Reuses the existing OCI
Signerfor authentication - Provides async versions of all GenAI operations (chat, streaming, embeddings, etc.)
- Supports async context manager pattern
Example Usage
import asyncio
from oci.generative_ai_inference import AsyncGenerativeAiInferenceClient
async def main():
async with AsyncGenerativeAiInferenceClient(config) as client:
# Concurrent requests - 3x faster than sequential
results = await asyncio.gather(
client.chat(details1),
client.chat(details2),
client.chat(details3),
)
asyncio.run(main())
Performance Impact
Testing shows 2-3.5x throughput improvement for concurrent workloads:
| Scenario | Sequential | Concurrent | Speedup |
|---|---|---|---|
| 3 requests (Llama 3.3) | 1.30s | 0.64s | 2.01x |
| 3 requests (Llama 3.2) | 1.40s | 0.44s | 3.18x |
| 3 requests (Cohere) | 0.50s | 0.14s | 3.54x |
Use Cases
- FastAPI/async web frameworks: Non-blocking GenAI calls in async endpoints
- LangChain agents: Concurrent tool calls and chain execution
- Batch processing: Parallel processing of multiple prompts
- Real-time applications: Low-latency streaming responses
Implementation
A reference implementation is provided in PR #835 with:
- Full async client implementation
- 15 unit tests
- 7 integration tests
- Tested on Python 3.9, 3.12, 3.13, 3.14
- Tested with 6 different models
Related
- PR: #835
- Lenguaje dominante
- Python
- Estrellas
- 473
- Forks
- 322
- Merge medio
- 13 min
- PR fusionados (30 d)
- 4
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de oracle/oci-python-sdk
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
oracle/oci-python-sdk#890 · 3 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
oracle/oci-python-sdk#879 · 3 comentarios ·
-
Example uses non-existent APIPosiblemente ocupada @reginaldalfret la tomó hace 5 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 66/100
oracle/oci-python-sdk#878 ·
-
SDK
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
oracle/oci-python-sdk#861 · 5 comentarios ·
-
SDK
Dificultad 2/5 1-3 horas Aptitud para principiantes 48/100
oracle/oci-python-sdk#852 ·
Todos los issues de oracle/oci-python-sdk
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
vllm-project/vllm#61131 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
kubernetes-client/python#2735 ·
Los mantenedores suelen responder en 1 día
-
desktop help wanted test
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Broken links found in docsAbiertodocs pydanty:is-working
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
pydantic/pydantic-ai#10113 ·
Los mantenedores suelen responder en 1 día
-
Tutorial unit test leaks sample data into tutorial doctestPosiblemente ocupada @Gambit-Checkmate la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100