Back to blog

Membuat Qwen-API: Unofficial Python SDK untuk Qwen AI

May 10, 2025 (1y ago)2 min read0 views

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