aksesai 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
aksesai-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,138 @@
1
+ Metadata-Version: 2.4
2
+ Name: aksesai
3
+ Version: 0.1.0
4
+ Summary: Python SDK untuk AksesAI — AI API Gateway Indonesia. 35+ model AI, bayar QRIS, tanpa kartu kredit.
5
+ Author-email: AksesAI <support@aksesai.id>
6
+ License: MIT
7
+ Project-URL: Homepage, https://aksesai.id
8
+ Project-URL: Documentation, https://aksesai.id/#docs
9
+ Project-URL: Repository, https://github.com/aksesai/aksesai-python
10
+ Project-URL: Dashboard, https://aksesai.id/dashboard
11
+ Keywords: ai,openai,llm,indonesia,chatgpt,claude,gemini,deepseek
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Requires-Python: >=3.9
22
+ Description-Content-Type: text/markdown
23
+ Requires-Dist: openai>=1.0.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: pytest; extra == "dev"
26
+ Requires-Dist: pytest-asyncio; extra == "dev"
27
+ Requires-Dist: black; extra == "dev"
28
+ Requires-Dist: ruff; extra == "dev"
29
+
30
+ # AksesAI Python SDK
31
+
32
+ **Satu baris, langsung akses 35+ model AI.**
33
+ GPT, Claude, Gemini, DeepSeek — semua dalam Rupiah, tanpa kartu kredit.
34
+
35
+ [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](https://pypi.org/project/aksesai/)
36
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)
37
+
38
+ ---
39
+
40
+ ## Install
41
+
42
+ ```bash
43
+ pip install aksesai
44
+ ```
45
+
46
+ ## Quick Start
47
+
48
+ ```python
49
+ from aksesai import AksesAI
50
+
51
+ # Dapetin API key: https://aksesai.id/dashboard
52
+ ai = AksesAI("sk-xxxx")
53
+
54
+ # Chat biasa
55
+ print(ai.chat("Jelaskan AI dalam satu kalimat"))
56
+
57
+ # Pilih model
58
+ print(ai.chat("Buat puisi tentang Indonesia", model="claude-sonnet-4-6"))
59
+
60
+ # Streaming (kata per kata)
61
+ for chunk in ai.chat_stream("Ceritakan sejarah Jakarta"):
62
+ print(chunk, end="")
63
+
64
+ # System prompt
65
+ print(ai.chat(
66
+ "Siapa kamu?",
67
+ model="deepseek-v4-pro",
68
+ system="Kamu adalah asisten AI yang ramah dan helpful."
69
+ ))
70
+ ```
71
+
72
+ ## Model Tersedia
73
+
74
+ ```python
75
+ # Lihat semua model
76
+ print(ai.model_names())
77
+ # ['gpt-4o', 'gpt-4o-mini', 'claude-sonnet-4-6', 'gemini-2.5-pro', ...]
78
+
79
+ # Cek model tertentu
80
+ models = ai.list_models()
81
+ for m in models:
82
+ print(m.id, m.owned_by)
83
+ ```
84
+
85
+ ## Async
86
+
87
+ ```python
88
+ import asyncio
89
+ from aksesai import AksesAI
90
+
91
+ async def main():
92
+ ai = AksesAI("sk-xxxx")
93
+ response = await ai.chat_async("Halo dari async!")
94
+ print(response)
95
+
96
+ asyncio.run(main())
97
+ ```
98
+
99
+ ## Embeddings
100
+
101
+ ```python
102
+ vector = ai.embed("AksesAI adalah platform AI Indonesia")
103
+ print(len(vector)) # 1536
104
+ ```
105
+
106
+ ## Test Koneksi
107
+
108
+ ```python
109
+ ai = AksesAI("sk-xxxx")
110
+ if ai.test():
111
+ print("🚀 Koneksi berhasil!")
112
+ else:
113
+ print("❌ Gagal — cek API key di https://aksesai.id/dashboard")
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Environment Variable
119
+
120
+ ```bash
121
+ export AKSESAI_API_KEY="sk-xxxx"
122
+ ```
123
+
124
+ ```python
125
+ ai = AksesAI() # Auto baca dari env
126
+ ```
127
+
128
+ ---
129
+
130
+ ## 🔗 Links
131
+
132
+ - 🌐 [AksesAI Dashboard](https://aksesai.id)
133
+ - 📖 [Dokumentasi API](https://aksesai.id/#docs)
134
+ - 💬 [Support Telegram](https://t.me/aksesai)
135
+
136
+ ---
137
+
138
+ **Dibuat di Indonesia ❤️🇮🇩**
@@ -0,0 +1,109 @@
1
+ # AksesAI Python SDK
2
+
3
+ **Satu baris, langsung akses 35+ model AI.**
4
+ GPT, Claude, Gemini, DeepSeek — semua dalam Rupiah, tanpa kartu kredit.
5
+
6
+ [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](https://pypi.org/project/aksesai/)
7
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)
8
+
9
+ ---
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ pip install aksesai
15
+ ```
16
+
17
+ ## Quick Start
18
+
19
+ ```python
20
+ from aksesai import AksesAI
21
+
22
+ # Dapetin API key: https://aksesai.id/dashboard
23
+ ai = AksesAI("sk-xxxx")
24
+
25
+ # Chat biasa
26
+ print(ai.chat("Jelaskan AI dalam satu kalimat"))
27
+
28
+ # Pilih model
29
+ print(ai.chat("Buat puisi tentang Indonesia", model="claude-sonnet-4-6"))
30
+
31
+ # Streaming (kata per kata)
32
+ for chunk in ai.chat_stream("Ceritakan sejarah Jakarta"):
33
+ print(chunk, end="")
34
+
35
+ # System prompt
36
+ print(ai.chat(
37
+ "Siapa kamu?",
38
+ model="deepseek-v4-pro",
39
+ system="Kamu adalah asisten AI yang ramah dan helpful."
40
+ ))
41
+ ```
42
+
43
+ ## Model Tersedia
44
+
45
+ ```python
46
+ # Lihat semua model
47
+ print(ai.model_names())
48
+ # ['gpt-4o', 'gpt-4o-mini', 'claude-sonnet-4-6', 'gemini-2.5-pro', ...]
49
+
50
+ # Cek model tertentu
51
+ models = ai.list_models()
52
+ for m in models:
53
+ print(m.id, m.owned_by)
54
+ ```
55
+
56
+ ## Async
57
+
58
+ ```python
59
+ import asyncio
60
+ from aksesai import AksesAI
61
+
62
+ async def main():
63
+ ai = AksesAI("sk-xxxx")
64
+ response = await ai.chat_async("Halo dari async!")
65
+ print(response)
66
+
67
+ asyncio.run(main())
68
+ ```
69
+
70
+ ## Embeddings
71
+
72
+ ```python
73
+ vector = ai.embed("AksesAI adalah platform AI Indonesia")
74
+ print(len(vector)) # 1536
75
+ ```
76
+
77
+ ## Test Koneksi
78
+
79
+ ```python
80
+ ai = AksesAI("sk-xxxx")
81
+ if ai.test():
82
+ print("🚀 Koneksi berhasil!")
83
+ else:
84
+ print("❌ Gagal — cek API key di https://aksesai.id/dashboard")
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Environment Variable
90
+
91
+ ```bash
92
+ export AKSESAI_API_KEY="sk-xxxx"
93
+ ```
94
+
95
+ ```python
96
+ ai = AksesAI() # Auto baca dari env
97
+ ```
98
+
99
+ ---
100
+
101
+ ## 🔗 Links
102
+
103
+ - 🌐 [AksesAI Dashboard](https://aksesai.id)
104
+ - 📖 [Dokumentasi API](https://aksesai.id/#docs)
105
+ - 💬 [Support Telegram](https://t.me/aksesai)
106
+
107
+ ---
108
+
109
+ **Dibuat di Indonesia ❤️🇮🇩**
@@ -0,0 +1,10 @@
1
+ """
2
+ AksesAI — AI API Gateway Indonesia.
3
+
4
+ 35+ model AI premium dalam satu API.
5
+ """
6
+
7
+ from .client import AksesAI
8
+
9
+ __version__ = "0.1.0"
10
+ __all__ = ["AksesAI"]
@@ -0,0 +1,282 @@
1
+ """
2
+ AksesAI Python SDK — AI API Gateway Indonesia.
3
+
4
+ 35+ model AI premium: GPT, Claude, Gemini, DeepSeek, dan lainnya.
5
+ Bayar QRIS, tanpa kartu kredit. Satu baris, langsung jalan.
6
+
7
+ Usage:
8
+ from aksesai import AksesAI
9
+
10
+ ai = AksesAI("sk-xxxx")
11
+ response = ai.chat("Halo!", model="gpt-4o-mini")
12
+ print(response)
13
+ """
14
+
15
+ import os
16
+ import warnings
17
+ from typing import Optional, List, Dict, Any, Iterator, overload
18
+
19
+ from openai import OpenAI, AsyncOpenAI
20
+ from openai.types.chat import ChatCompletion, ChatCompletionChunk
21
+ from openai.types.model import Model
22
+
23
+
24
+ class AksesAI:
25
+ """
26
+ Client SDK untuk AksesAI API Gateway.
27
+
28
+ Args:
29
+ api_key: API key dari dashboard AksesAI (https://aksesai.id/dashboard).
30
+ Default membaca dari environment variable ``AKSESAI_API_KEY``.
31
+ base_url: Base URL API AksesAI. Default ``https://api.aksesai.id/v1``.
32
+ **kwargs: Argumen tambahan diteruskan ke OpenAI client.
33
+
34
+ Example:
35
+ >>> ai = AksesAI("sk-xxxx")
36
+ >>> ai.chat("Jelaskan AI dalam satu kalimat")
37
+ 'AI adalah teknologi yang memungkinkan komputer...'
38
+
39
+ >>> # Streaming
40
+ >>> for chunk in ai.chat_stream("Ceritakan tentang Indonesia"):
41
+ ... print(chunk, end="")
42
+ """
43
+
44
+ DEFAULT_BASE_URL = "https://api.aksesai.id/v1"
45
+
46
+ def __init__(
47
+ self,
48
+ api_key: Optional[str] = None,
49
+ base_url: Optional[str] = None,
50
+ **kwargs,
51
+ ):
52
+ api_key = api_key or os.environ.get("AKSESAI_API_KEY")
53
+ if not api_key:
54
+ raise ValueError(
55
+ "API key diperlukan. Dapatkan di https://aksesai.id/dashboard dan "
56
+ "passing sebagai `AksesAI('sk-xxxx')` atau set env `AKSESAI_API_KEY`."
57
+ )
58
+
59
+ base_url = base_url or os.environ.get("AKSESAI_BASE_URL", self.DEFAULT_BASE_URL)
60
+
61
+ self._client = OpenAI(
62
+ api_key=api_key,
63
+ base_url=base_url,
64
+ **kwargs,
65
+ )
66
+ self._async_client: Optional[AsyncOpenAI] = None
67
+ self.api_key = api_key
68
+ self.base_url = base_url
69
+
70
+ # ─── Chat ────────────────────────────────────────────────────
71
+
72
+ def chat(
73
+ self,
74
+ message: str,
75
+ *,
76
+ model: str = "gpt-4o-mini",
77
+ system: Optional[str] = None,
78
+ temperature: float = 0.7,
79
+ max_tokens: int = 1024,
80
+ **kwargs,
81
+ ) -> str:
82
+ """
83
+ Kirim pesan dan dapatkan respons teks.
84
+
85
+ Args:
86
+ message: Pesan user.
87
+ model: Nama model (default ``gpt-4o-mini``).
88
+ Cek daftar lengkap: https://aksesai.id/#models
89
+ system: System prompt opsional.
90
+ temperature: Kreativitas respons (0.0–2.0).
91
+ max_tokens: Maksimum token output.
92
+ **kwargs: Parameter tambahan diteruskan ke API.
93
+
94
+ Returns:
95
+ Teks respons dari model.
96
+ """
97
+ messages = []
98
+ if system:
99
+ messages.append({"role": "system", "content": system})
100
+ messages.append({"role": "user", "content": message})
101
+
102
+ response = self._client.chat.completions.create(
103
+ model=model,
104
+ messages=messages,
105
+ temperature=temperature,
106
+ max_tokens=max_tokens,
107
+ **kwargs,
108
+ )
109
+ return response.choices[0].message.content or ""
110
+
111
+ def chat_stream(
112
+ self,
113
+ message: str,
114
+ *,
115
+ model: str = "gpt-4o-mini",
116
+ system: Optional[str] = None,
117
+ temperature: float = 0.7,
118
+ max_tokens: int = 1024,
119
+ **kwargs,
120
+ ) -> Iterator[str]:
121
+ """
122
+ Kirim pesan dan dapatkan respons streaming (kata per kata).
123
+
124
+ Args:
125
+ message: Pesan user.
126
+ model: Nama model.
127
+ system: System prompt opsional.
128
+ temperature: Kreativitas respons.
129
+ max_tokens: Maksimum token output.
130
+ **kwargs: Parameter tambahan.
131
+
132
+ Yields:
133
+ Potongan teks dari model (satu per satu).
134
+ """
135
+ messages = []
136
+ if system:
137
+ messages.append({"role": "system", "content": system})
138
+ messages.append({"role": "user", "content": message})
139
+
140
+ stream = self._client.chat.completions.create(
141
+ model=model,
142
+ messages=messages,
143
+ temperature=temperature,
144
+ max_tokens=max_tokens,
145
+ stream=True,
146
+ **kwargs,
147
+ )
148
+ for chunk in stream:
149
+ delta = chunk.choices[0].delta
150
+ if delta.content:
151
+ yield delta.content
152
+
153
+ def chat_raw(
154
+ self,
155
+ messages: List[Dict[str, str]],
156
+ *,
157
+ model: str = "gpt-4o-mini",
158
+ **kwargs,
159
+ ) -> ChatCompletion:
160
+ """
161
+ Kirim messages mentah (format OpenAI) dan dapatkan response object penuh.
162
+
163
+ Args:
164
+ messages: List messages dalam format [{"role": "...", "content": "..."}].
165
+ model: Nama model.
166
+ **kwargs: Parameter tambahan.
167
+
168
+ Returns:
169
+ ChatCompletion object dari OpenAI SDK.
170
+ """
171
+ return self._client.chat.completions.create(
172
+ model=model,
173
+ messages=messages,
174
+ **kwargs,
175
+ )
176
+
177
+ # ─── Models ──────────────────────────────────────────────────
178
+
179
+ def list_models(self) -> List[Model]:
180
+ """
181
+ Ambil daftar model yang tersedia di AksesAI.
182
+
183
+ Returns:
184
+ List of Model objects.
185
+ """
186
+ return self._client.models.list().data
187
+
188
+ def model_names(self) -> List[str]:
189
+ """
190
+ Ambil daftar nama model yang tersedia.
191
+
192
+ Returns:
193
+ List nama model (string).
194
+ """
195
+ models = self.list_models()
196
+ return [m.id for m in models]
197
+
198
+ # ─── Async ───────────────────────────────────────────────────
199
+
200
+ @property
201
+ def async_client(self) -> AsyncOpenAI:
202
+ """Async client (lazy init)."""
203
+ if self._async_client is None:
204
+ self._async_client = AsyncOpenAI(
205
+ api_key=self.api_key,
206
+ base_url=self.base_url,
207
+ )
208
+ return self._async_client
209
+
210
+ async def chat_async(
211
+ self,
212
+ message: str,
213
+ *,
214
+ model: str = "gpt-4o-mini",
215
+ system: Optional[str] = None,
216
+ temperature: float = 0.7,
217
+ max_tokens: int = 1024,
218
+ **kwargs,
219
+ ) -> str:
220
+ """Async version of :meth:`chat`."""
221
+ messages = []
222
+ if system:
223
+ messages.append({"role": "system", "content": system})
224
+ messages.append({"role": "user", "content": message})
225
+
226
+ response = await self.async_client.chat.completions.create(
227
+ model=model,
228
+ messages=messages,
229
+ temperature=temperature,
230
+ max_tokens=max_tokens,
231
+ **kwargs,
232
+ )
233
+ return response.choices[0].message.content or ""
234
+
235
+ # ─── Embeddings ──────────────────────────────────────────────
236
+
237
+ def embed(
238
+ self,
239
+ text: str,
240
+ *,
241
+ model: str = "text-embedding-3-small",
242
+ **kwargs,
243
+ ) -> List[float]:
244
+ """
245
+ Generate embedding vector dari text.
246
+
247
+ Args:
248
+ text: Teks yang akan di-embed.
249
+ model: Model embedding.
250
+ **kwargs: Parameter tambahan.
251
+
252
+ Returns:
253
+ List float embedding vector.
254
+ """
255
+ response = self._client.embeddings.create(
256
+ model=model,
257
+ input=text,
258
+ **kwargs,
259
+ )
260
+ return response.data[0].embedding
261
+
262
+ # ─── Utils ───────────────────────────────────────────────────
263
+
264
+ def test(self) -> bool:
265
+ """
266
+ Test koneksi — kirim ping ke API AksesAI.
267
+
268
+ Returns:
269
+ True jika koneksi berhasil.
270
+ """
271
+ try:
272
+ models = self.list_models()
273
+ return len(models) > 0
274
+ except Exception:
275
+ return False
276
+
277
+ def __repr__(self) -> str:
278
+ try:
279
+ count = len(self.list_models())
280
+ except Exception:
281
+ count = "?"
282
+ return f"AksesAI(base_url='{self.base_url}', models={count})"
@@ -0,0 +1,138 @@
1
+ Metadata-Version: 2.4
2
+ Name: aksesai
3
+ Version: 0.1.0
4
+ Summary: Python SDK untuk AksesAI — AI API Gateway Indonesia. 35+ model AI, bayar QRIS, tanpa kartu kredit.
5
+ Author-email: AksesAI <support@aksesai.id>
6
+ License: MIT
7
+ Project-URL: Homepage, https://aksesai.id
8
+ Project-URL: Documentation, https://aksesai.id/#docs
9
+ Project-URL: Repository, https://github.com/aksesai/aksesai-python
10
+ Project-URL: Dashboard, https://aksesai.id/dashboard
11
+ Keywords: ai,openai,llm,indonesia,chatgpt,claude,gemini,deepseek
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Requires-Python: >=3.9
22
+ Description-Content-Type: text/markdown
23
+ Requires-Dist: openai>=1.0.0
24
+ Provides-Extra: dev
25
+ Requires-Dist: pytest; extra == "dev"
26
+ Requires-Dist: pytest-asyncio; extra == "dev"
27
+ Requires-Dist: black; extra == "dev"
28
+ Requires-Dist: ruff; extra == "dev"
29
+
30
+ # AksesAI Python SDK
31
+
32
+ **Satu baris, langsung akses 35+ model AI.**
33
+ GPT, Claude, Gemini, DeepSeek — semua dalam Rupiah, tanpa kartu kredit.
34
+
35
+ [![Python](https://img.shields.io/badge/python-3.9%2B-blue)](https://pypi.org/project/aksesai/)
36
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE)
37
+
38
+ ---
39
+
40
+ ## Install
41
+
42
+ ```bash
43
+ pip install aksesai
44
+ ```
45
+
46
+ ## Quick Start
47
+
48
+ ```python
49
+ from aksesai import AksesAI
50
+
51
+ # Dapetin API key: https://aksesai.id/dashboard
52
+ ai = AksesAI("sk-xxxx")
53
+
54
+ # Chat biasa
55
+ print(ai.chat("Jelaskan AI dalam satu kalimat"))
56
+
57
+ # Pilih model
58
+ print(ai.chat("Buat puisi tentang Indonesia", model="claude-sonnet-4-6"))
59
+
60
+ # Streaming (kata per kata)
61
+ for chunk in ai.chat_stream("Ceritakan sejarah Jakarta"):
62
+ print(chunk, end="")
63
+
64
+ # System prompt
65
+ print(ai.chat(
66
+ "Siapa kamu?",
67
+ model="deepseek-v4-pro",
68
+ system="Kamu adalah asisten AI yang ramah dan helpful."
69
+ ))
70
+ ```
71
+
72
+ ## Model Tersedia
73
+
74
+ ```python
75
+ # Lihat semua model
76
+ print(ai.model_names())
77
+ # ['gpt-4o', 'gpt-4o-mini', 'claude-sonnet-4-6', 'gemini-2.5-pro', ...]
78
+
79
+ # Cek model tertentu
80
+ models = ai.list_models()
81
+ for m in models:
82
+ print(m.id, m.owned_by)
83
+ ```
84
+
85
+ ## Async
86
+
87
+ ```python
88
+ import asyncio
89
+ from aksesai import AksesAI
90
+
91
+ async def main():
92
+ ai = AksesAI("sk-xxxx")
93
+ response = await ai.chat_async("Halo dari async!")
94
+ print(response)
95
+
96
+ asyncio.run(main())
97
+ ```
98
+
99
+ ## Embeddings
100
+
101
+ ```python
102
+ vector = ai.embed("AksesAI adalah platform AI Indonesia")
103
+ print(len(vector)) # 1536
104
+ ```
105
+
106
+ ## Test Koneksi
107
+
108
+ ```python
109
+ ai = AksesAI("sk-xxxx")
110
+ if ai.test():
111
+ print("🚀 Koneksi berhasil!")
112
+ else:
113
+ print("❌ Gagal — cek API key di https://aksesai.id/dashboard")
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Environment Variable
119
+
120
+ ```bash
121
+ export AKSESAI_API_KEY="sk-xxxx"
122
+ ```
123
+
124
+ ```python
125
+ ai = AksesAI() # Auto baca dari env
126
+ ```
127
+
128
+ ---
129
+
130
+ ## 🔗 Links
131
+
132
+ - 🌐 [AksesAI Dashboard](https://aksesai.id)
133
+ - 📖 [Dokumentasi API](https://aksesai.id/#docs)
134
+ - 💬 [Support Telegram](https://t.me/aksesai)
135
+
136
+ ---
137
+
138
+ **Dibuat di Indonesia ❤️🇮🇩**
@@ -0,0 +1,9 @@
1
+ README.md
2
+ pyproject.toml
3
+ aksesai/__init__.py
4
+ aksesai/client.py
5
+ aksesai.egg-info/PKG-INFO
6
+ aksesai.egg-info/SOURCES.txt
7
+ aksesai.egg-info/dependency_links.txt
8
+ aksesai.egg-info/requires.txt
9
+ aksesai.egg-info/top_level.txt
@@ -0,0 +1,7 @@
1
+ openai>=1.0.0
2
+
3
+ [dev]
4
+ pytest
5
+ pytest-asyncio
6
+ black
7
+ ruff
@@ -0,0 +1,2 @@
1
+ aksesai
2
+ dist
@@ -0,0 +1,41 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "aksesai"
7
+ version = "0.1.0"
8
+ description = "Python SDK untuk AksesAI — AI API Gateway Indonesia. 35+ model AI, bayar QRIS, tanpa kartu kredit."
9
+ readme = "README.md"
10
+ license = {text = "MIT"}
11
+ authors = [
12
+ {name = "AksesAI", email = "support@aksesai.id"}
13
+ ]
14
+ keywords = ["ai", "openai", "llm", "indonesia", "chatgpt", "claude", "gemini", "deepseek"]
15
+ classifiers = [
16
+ "Development Status :: 4 - Beta",
17
+ "Intended Audience :: Developers",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.9",
21
+ "Programming Language :: Python :: 3.10",
22
+ "Programming Language :: Python :: 3.11",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
25
+ ]
26
+ requires-python = ">=3.9"
27
+ dependencies = [
28
+ "openai>=1.0.0",
29
+ ]
30
+
31
+ [project.optional-dependencies]
32
+ dev = ["pytest", "pytest-asyncio", "black", "ruff"]
33
+
34
+ [project.urls]
35
+ Homepage = "https://aksesai.id"
36
+ Documentation = "https://aksesai.id/#docs"
37
+ Repository = "https://github.com/aksesai/aksesai-python"
38
+ Dashboard = "https://aksesai.id/dashboard"
39
+
40
+ [tool.setuptools.packages.find]
41
+ where = ["."]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+