henergyqueai
La bibliothèque officielle de l’API HenergyqueAI pour Python : Velys, Oryne et Aelyr en quelques lignes.
- Python 3.9+, une seule dépendance (httpx).
- Un client classique et un client asynchrone.
- Streaming, outils, images, sorties JSON.
- Nouvelles tentatives automatiques sur les erreurs passagères.
pip install henergyqueai
Créez une clé sur henergyqueai.fr/plateforme/cles, puis :
export HENERGYQUEAI_API_KEY="hak_…"
Premier appel
from henergyqueai import HenergyqueAI
client = HenergyqueAI() # lit HENERGYQUEAI_API_KEY
print(client.ask("Donne-moi trois idées de prénom pour un chat."))
ask utilise Velys par défaut :
client.ask("Relis cette fonction.", model="oryne", system="Réponds en une phrase.")
Conversation complète
reponse = client.chat.create(
model="oryne",
messages=[
{"role": "system", "content": "Tu es un relecteur de code exigeant."},
{"role": "user", "content": "Que penses-tu de `for i in range(len(liste))` ?"},
],
temperature=0.3,
)
print(reponse.text) # le texte, déjà extrait
print(reponse.usage.total_tokens)
Les réponses sont des dictionnaires dont les clés se lisent aussi comme des attributs : reponse.choices[0].message.content ou reponse["choices"][0]["message"]["content"].
Streaming
with client.chat.stream(
model="velys",
messages=[{"role": "user", "content": "Raconte une histoire courte."}],
) as flux:
for texte in flux.text_stream:
print(texte, end="", flush=True)
finale = flux.final_completion()
Client asynchrone
import asyncio
from henergyqueai import AsyncHenergyqueAI
async def main():
async with AsyncHenergyqueAI() as client:
print(await client.ask("Bonjour !"))
flux = client.chat.stream(model="velys", messages=[{"role": "user", "content": "Un haïku."}])
async for texte in flux.text_stream:
print(texte, end="", flush=True)
asyncio.run(main())
Outils
import json
reponse = client.chat.create(
model="oryne",
messages=[{"role": "user", "content": "Quel temps fait-il à Nantes ?"}],
tools=[{
"type": "function",
"function": {
"name": "meteo",
"description": "La météo actuelle d’une ville",
"parameters": {"type": "object", "properties": {"ville": {"type": "string"}}, "required": ["ville"]},
},
}],
)
for appel in reponse.choices[0].message.get("tool_calls") or []:
ville = json.loads(appel.function.arguments)["ville"]
# … exécutez l’outil, puis renvoyez son résultat dans un message {"role": "tool", "tool_call_id": appel.id, "content": …}
Format messages
message = client.messages.create(
model="aelyr",
system="Tu es précis et concis.",
messages=[{"role": "user", "content": "Explique la différence entre TCP et UDP."}],
)
print(message.text)
with client.messages.stream(model="aelyr", messages=[{"role": "user", "content": "Un haïku."}]) as flux:
for texte in flux.text_stream:
print(texte, end="")
client.messages.count_tokens(model="velys", messages=[{"role": "user", "content": "Bonjour"}]).input_tokens
max_tokens vaut 1024 par défaut dans la bibliothèque.
Modèles et consommation
[modele.id for modele in client.models.list()] # ["velys", "oryne", "aelyr"]
client.models.retrieve("oryne")
client.usage().requests.remaining
Erreurs
from henergyqueai import RateLimitError, AuthenticationError
try:
client.ask("Bonjour")
except RateLimitError as erreur:
print(f"Réessayez dans {erreur.retry_after} s.")
except AuthenticationError:
print("Clé invalide.")
Chaque erreur porte status, type, code, param, request_id et retry_after. Les autres classes sont InvalidRequestError, PermissionDeniedError, NotFoundError, ServerError, ConnectionError et TimeoutError, toutes filles de HenergyqueAIError.
Les erreurs passagères (429, 5xx, coupure réseau) sont retentées deux fois, en respectant retry-after. La limite quotidienne de votre offre n’est jamais retentée.
Options
client = HenergyqueAI(
"hak_…", # sinon HENERGYQUEAI_API_KEY
timeout=60.0, # secondes (10 minutes par défaut)
max_retries=3, # 2 par défaut
)
Licence
MIT
Release files for henergyqueai 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| henergyqueai-0.1.0.tar.gz | 11.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| henergyqueai-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.8 kB
Release files / henergyqueai-0.1.0.tar.gz
| Download URL | henergyqueai-0.1.0.tar.gz |
|---|---|
| Size | 11.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
da75be09113e15fec2b125fe40b873909f5ec3c5adaadb21efe8c86a02be6f38
|
|
BLAKE2b-256 checksum How to use checksums |
eb9641a79f2c9606c646d18310b19ac69cec89164f5f9cfef205d44d4b88708a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / henergyqueai-0.1.0-py3-none-any.whl
| Download URL | henergyqueai-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
76de924c33b1c699514ed750aa90c2fd8d5a0e33de21de4e47355857357637d4
|
|
BLAKE2b-256 checksum How to use checksums |
4d297c34619e71bc82d807c3d719da2fbd0c095c88635a2bf0ab08bb3a4d4115
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|