Membuat Qwen-API: Unofficial Python SDK untuk Qwen AI
Latar Belakang
Saat bekerja dengan berbagai AI model, saya sering membutuhkan cara yang mudah untuk berinteraksi dengan Qwen AI. Sayangnya, belum ada Python SDK resmi yang lengkap. Dari situlah ide untuk membuat qwen-api muncul.
Fitur Utama
- Chat Completions — Kirim pesan dan dapatkan respons dari Qwen models
- Streaming Responses — Real-time streaming untuk UX yang lebih baik
- Async Support — Full async/await support menggunakan httpx
- File Upload — Upload file via Aliyun OSS dengan HMAC v4 authentication
Arsitektur
SDK ini dibangun dengan prinsip OOP yang clean:
from qwen_api import QwenClient
client = QwenClient()
# Simple chat
response = client.chat("Hello, how are you?")
print(response)
# Streaming
for chunk in client.chat_stream("Tell me a story"):
print(chunk, end="", flush=True)
# Async
import asyncio
async def main():
response = await client.achat("Hello async!")
print(response)
asyncio.run(main())Tantangan Teknis
1. Reverse Engineering API
Karena ini unofficial SDK, saya harus melakukan reverse engineering terhadap API Qwen. Ini melibatkan analisis network requests, memahami authentication flow, dan mendokumentasikan endpoint yang tersedia.
2. HMAC v4 Authentication
File upload ke Aliyun OSS memerlukan HMAC v4 signature. Implementasi ini cukup kompleks karena melibatkan canonical request construction, string-to-sign generation, dan signature calculation.
3. Streaming Parser
Parsing Server-Sent Events (SSE) dari streaming response memerlukan handling yang hati-hati untuk menangani partial chunks dan reconnection.
Pelajaran
Membangun SDK ini mengajarkan banyak hal tentang API design, error handling, dan pentingnya dokumentasi yang baik. Proyek ini juga menjadi kontribusi open source pertama saya yang mendapat perhatian dari komunitas.
Repository: github.com/arosyihuddin/qwen-api