À propos du projet
opencode2api est une passerelle Go pour OpenCode Zen et Zen Go. Elle expose les points de terminaison Chat Completions, Responses et Anthropic Messages, en traduisant entre leurs protocoles natifs tout en gérant les clés et proxys en amont. L'exécutable inclut une WebUI et ne nécessite ni runtime Node.js ni base de données.
Les capacités incluent des réponses JSON et SSE sur les trois protocoles d'inférence, la prise en charge du texte, des images, du raisonnement, des outils de fonction, des appels d'outils et des résultats d'outils, des pools de clés Zen et Go séparés avec préférence de niveau configurable, des tentatives de nouvelle exécution et une affinité de session, un accès anonyme optionnel à Zen, la prise en charge de proxys direct/HTTP/HTTPS/SOCKS5/SOCKS5H, la découverte dynamique des modèles avec caches sur disque, un port de gestion séparé avec édition de configuration, un Playground, des diagnostics, des statistiques de jetons et des journaux en direct, ainsi que le rechargement à chaud de la configuration avec validation.
Démarrage rapide : téléchargez un binaire depuis GitHub Releases ou compilez avec Go 1.24+. Modifiez config.json pour définir server_keys, les clés Zen/Go (ou activer l'anonymat) et le mot de passe de la WebUI. Exécutez avec `./opencode2api -config config.json`. Des images Docker sont disponibles via ghcr.io/jasonxu114514/opencode2api avec prise en charge de docker compose.
Les points de terminaison API incluent GET /v1/models, POST /v1/chat/completions, POST /v1/responses, POST /v1/messages et GET /healthz. L'authentification utilise les server_keys locales via les en-têtes Bearer ou x-api-key. Le streaming est pris en charge avec `stream: true`. La passerelle n'implémente pas les embeddings, les téléversements de fichiers, la génération d'images ni la récupération/annulation de Responses, et ne stocke pas l'historique des conversations.
Le routage utilise la découverte des modèles depuis /v1/models en amont et le catalogue de capacités d'OpenCode, avec des remplacements de protocole disponibles. L'accès anonyme est activé pour les modèles dont l'ID contient 'free' ou les modèles non dépréciés à coût nul. La séquence de routage essaie d'abord les proxys anonymes, puis les niveaux authentifiés par ordre de préférence, avec des tentatives de nouvelle exécution par niveau. L'affinité de session utilise un hachage stable basé sur des ID de session explicites ou le premier message utilisateur.
La configuration couvre les clés, les écouteurs, les préférences de routage, l'effort de raisonnement (avec remplacements par modèle), les proxys (liste en ligne et proxyfile), les délais d'attente, les pools de connexions, la journalisation et les paramètres de la WebUI. La WebUI fournit un Centre de configuration, un Playground, des diagnostics, une surveillance et des journaux en direct. Les routes de l'API de gestion gèrent l'authentification, la récupération/mise à jour de la configuration, le rechargement, la révélation des secrets, les mises à jour de compte, les statistiques de surveillance, les diagnostics de modèle, les tests d'inférence et les journaux.
La surveillance suit les résultats des requêtes, les tentatives en amont, l'utilisation des jetons et les statistiques de ressources. La persistance des données inclut les fichiers de configuration, les sauvegardes et les caches de modèles ; les sessions et les métriques sont en mémoire. Les contrôles de santé signalent l'état de préparation en fonction de la disponibilité du catalogue et de la santé des proxys. Le développement nécessite Go 1.24+ et utilise l'outillage Go standard.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.