{"id":196,"date":"2026-10-09T16:01:30","date_gmt":"2026-10-09T12:01:30","guid":{"rendered":"https:\/\/demensdeum.com\/blog\/2026\/10\/09\/opencode-gigachat\/"},"modified":"2026-10-09T16:01:30","modified_gmt":"2026-10-09T12:01:30","slug":"opencode-gigachat","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/de\/2026\/10\/09\/opencode-gigachat\/","title":{"rendered":"Russische KI-Anbieter f\u00fcr OpenCode"},"content":{"rendered":"<p>OpenCode ist ein offener Programmieragent, der direkt im Terminal arbeitet: Projektdateien liest, Code bearbeitet, Befehle und Tests ausf\u00fchrt, das Repository durchsucht und mit Git arbeitet. Seine St\u00e4rke liegt darin, dass es nicht an einen Modellanbieter gebunden ist und Dutzende Anbieter verbinden kann.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/demensdeum.com\/blog\/wp-content\/uploads\/2026\/10\/aibank.jpg\"\/><\/p>\n<p>GigaChat ist ein gro\u00dfes Sprachmodell von Sber. Es ist nicht in der Liste der OpenCode-Anbieter enthalten, aber das ist kein Problem: OpenCode verbindet beliebige Anbieter \u00fcber Vercel AI SDK-Pakete. F\u00fcr GigaChat gibt es ein Paket <b>gigachat-ai-sdk-provider<\/b>, das sich um die OAuth-Autorisierung und die Aktualisierung des Zugriffstokens k\u00fcmmert. Eine weitere Nuance sind die Zertifikate des Ministeriums f\u00fcr digitale Entwicklung: Ohne sie vertraut Node den GigaChat-Servern nicht und Anfragen schlagen mit einem Fehler bei der Zertifikats\u00fcberpr\u00fcfung fehl.<\/p>\n<p>In diesem Beitrag beschreibe ich, wie man einen Schl\u00fcssel erh\u00e4lt, Zertifikate installiert und GigaChat mit OpenCode verbindet.<\/p>\n<h2>Was Sie brauchen<\/h2>\n<p>Zum Arbeiten ben\u00f6tigen Sie drei Dinge:<\/p>\n<ul>\n<li><b>OpenCode installiert.<\/b> Wenn der Agent noch nicht installiert ist, habe ich den Installationsvorgang in einem separaten Hinweis zu OpenCode und DeepSeek besprochen.<\/li>\n<li><b>GigaChat-Konto.<\/b> Registrierung in GigaChat Studio und Autorisierungsschl\u00fcssel \u2013 Sie ben\u00f6tigen eine Sber-ID, um sich anzumelden.<\/li>\n<li><b>Modernes Terminal.<\/b> WezTerm, Alacritty, Ghostty, Kitty oder jedes andere reicht aus.<\/li>\n<\/ul>\n<h2>GigaChat-Autorisierungsschl\u00fcssel<\/h2>\n<p>Der Schl\u00fcssel wird in Ihrem pers\u00f6nlichen GigaChat Studio-Konto erstellt. Gehen Sie zu Developers.sber.ru\/studio, melden Sie sich an und erstellen Sie ein Projekt im Abschnitt <b>GigaChat API<\/b>. In den Projekteinstellungen gibt es einen Block mit Berechtigungsdaten: Die Zeile, die von dort kopiert wird, ist ein vorgefertigter Berechtigungsschl\u00fcssel in base64. Dies wird in die Umgebungsvariable eingef\u00fcgt und nicht das Client-Geheimnis-Paar separat.<\/p>\n<p>Zusammen mit dem Schl\u00fcssel wird <b>scope<\/b> angegeben \u2013 der Zugriffsbereich:<\/p>\n<ul>\n<li><b>GIGACHAT_API_PERS<\/b> \u2013 f\u00fcr Einzelpersonen.<\/li>\n<li><b>GIGACHAT_API_B2B<\/b> \u2013 f\u00fcr Einzelunternehmer und juristische Personen.<\/li>\n<li><b>GIGACHAT_API_CORP<\/b> \u2013 Unternehmenszugriff.<\/li>\n<\/ul>\n<p>Der angezeigte Schl\u00fcsselwert sollte sofort gespeichert werden, er wird sp\u00e4ter nicht mehr angezeigt und muss ggf. neu vergeben werden.<\/p>\n<p>Es ist wichtig zu verstehen, was diese Zeile ist. Der Autorisierungsschl\u00fcssel ist kein separates Geheimnis, sondern ein Paar von <b>client_id:client_secret<\/b>, das bereits in base64 codiert ist. Die gigachat-js-Bibliothek ersetzt diesen Header in der OAuth-Anfrage:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>Authorization: Basic \u0432\u0430\u0448_\u043a\u043b\u044e\u0447_\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438\n<\/code><\/pre>\n<\/div>\n<p>Als Reaktion darauf verf\u00fcgt ein JWE-Zugriffstoken \u00fcber eine Lebensdauer von etwa einer halben Stunde und wird dann von der Bibliothek automatisch aktualisiert. Das Paket selbst pr\u00fcft, ob der Wert Base64 \u00e4hnelt, und warnt, wenn die Variable versehentlich ein \u201erohes\u201c Client-Geheimnis enth\u00e4lt. Daher ist es notwendig, den vorgefertigten Base64-String vom Konto in die Konfigurations- und Umgebungsvariable zu \u00fcbertragen und nicht das Paar client_id und client_secret separat.<\/p>\n<h2>Zertifikate des Ministeriums f\u00fcr digitale Entwicklung<\/h2>\n<p>Die GigaChat-API verwendet Zertifikate des NCA Ministry of Digital Development. Der standardm\u00e4\u00dfige vertrauensw\u00fcrdige Stammspeicher verf\u00fcgt nicht \u00fcber sie. Wenn Sie also versuchen, ein Zugriffstoken abzurufen, schl\u00e4gt die Anforderung mit einem Fehler wie dem folgenden fehl:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>self-signed certificate in certificate chain\n<\/code><\/pre>\n<\/div>\n<p>Zertifikate k\u00f6nnen auf Betriebssystemebene installiert werden \u2013 dann werden sie vom Browser und den Systemdienstprogrammen als vertrauensw\u00fcrdig eingestuft. Aber OpenCode l\u00e4uft auf Node und Bun, daher ist es sicherer und einfacher, die Zertifikatsdatei direkt in der Variablen <b>NODE_EXTRA_CA_CERTS<\/b> anzugeben. Laden Sie die Stamm- und Ausstellerzertifikate herunter und f\u00fcgen Sie sie in einer PEM-Datei zusammen:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>curl -s https:\/\/gu-st.ru\/content\/lending\/russian_trusted_root_ca_pem.crt -o russian_trusted_root_ca_pem.crt\ncurl -s https:\/\/gu-st.ru\/content\/lending\/russian_trusted_sub_ca_pem.crt -o russian_trusted_sub_ca_pem.crt\ncat russian_trusted_root_ca_pem.crt russian_trusted_sub_ca_pem.crt > russian_trusted_ca_bundle.pem\n<\/code><\/pre>\n<\/div>\n<p>Die Datei kann an einem geeigneten Ort abgelegt werden und ihr vollst\u00e4ndiger Pfad kann beim Starten des Agenten angegeben werden.<\/p>\n<p>Hier gibt es einen Haken. Heruntergeladene Dateien verwenden CRLF-Zeilenumbr\u00fcche und das Stammzertifikat verf\u00fcgt \u00fcber keinen nachgestellten Zeilenvorschub. Daher verkettet eine normale Katze das Ende des ersten Zertifikats und den Anfang des zweiten in einer Zeile:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>-----END CERTIFICATE----------BEGIN CERTIFICATE-----\n<\/code><\/pre>\n<\/div>\n<p>LibreSSL \u2013 und das System OpenSSL unter macOS ist, ich m\u00f6chte Sie daran erinnern, genau LibreSSL \u2013 akzeptiert eine solche Datei nicht und antwortet mit einem Fehler:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>PEM routines:CRYPTO_internal:bad end line\n<\/code><\/pre>\n<\/div>\n<p>Das bedeutet, dass eine Katze allein nicht ausreicht. Jedes Zertifikat muss zuerst \u00fcber openssl ausgef\u00fchrt werden: Es wird in kanonisches PEM mit LF-Zeilenvorsch\u00fcben und einem letzten Zeilenvorschub umcodiert und erst dann zusammengef\u00fchrt:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>openssl x509 -in russian_trusted_root_ca_pem.crt -out russian_trusted_root_ca.pem\nopenssl x509 -in russian_trusted_sub_ca_pem.crt -out russian_trusted_sub_ca.pem\ncat russian_trusted_root_ca.pem russian_trusted_sub_ca.pem > russian_trusted_ca_bundle.pem\n<\/code><\/pre>\n<\/div>\n<p>Sie k\u00f6nnen \u00fcberpr\u00fcfen, ob die Datei wie folgt gelesen wird:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>openssl x509 -in russian_trusted_ca_bundle.pem -noout -subject\n<\/code><\/pre>\n<\/div>\n<p>Wenn die Zertifikate aus einer anderen Quelle stammen und im DER- oder PKCS#7-Format vorliegen, k\u00f6nnen sie auch in PEM umcodiert werden:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>openssl x509 -in cert.crt -inform DER -outform PEM -out cert.pem\nopenssl pkcs7 -print_certs -in bundle.p7b -out cert.pem\n<\/code><\/pre>\n<\/div>\n<h2>Mit OpenCode verbinden<\/h2>\n<p>Der Anbieter ist in der Konfigurationsdatei <b>opencode.jsonc<\/b> beschrieben. OpenCode selbst l\u00e4dt das im <b>npm<\/b>-Feld angegebene npm-Paket herunter, verbindet es, findet darin die <b>createGigaChat<\/b>-Factory und \u00fcbergibt ihr die Optionen. Es reicht aus, die Modelle anhand ihrer Kennungen aus der API aufzulisten.<\/p>\n<p>Die Datei kann an zwei Orten abgelegt werden:<\/p>\n<ul>\n<li><b>Global<\/b> \u2013 ~\/.config\/opencode\/opencode.jsonc. Die Einstellungen gelten f\u00fcr alle Benutzerprojekte.<\/li>\n<li><b>Im Projekt<\/b> \u2013 opencode.jsonc im Projektstamm. Diese Konfiguration hat eine h\u00f6here Priorit\u00e4t und kann sicher an git \u00fcbergeben werden.<\/li>\n<\/ul>\n<p>Beide Dateien verwenden das gleiche Schema und werden kombiniert: Die Projektdatei \u00fcberlappt die globale Datei nur bei passenden Schl\u00fcsseln, die restlichen Einstellungen werden gespeichert. Die Erweiterung .jsonc wird ebenfalls unterst\u00fctzt. Wenn GigaChat nur f\u00fcr einige Repositories ben\u00f6tigt wird, ist es bequemer, den Anbieter in der Projektkonfiguration zu belassen, statt in der globalen.<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"provider\": {\n    \"gigachat\": {\n      \"npm\": \"gigachat-ai-sdk-provider\",\n      \"name\": \"GigaChat\",\n      \"models\": {\n        \"GigaChat-2-Max\": { \"name\": \"GigaChat 2 Max\" },\n        \"GigaChat-2-Pro\": { \"name\": \"GigaChat 2 Pro\" },\n        \"GigaChat-2\": { \"name\": \"GigaChat 2 Lite\" },\n        \"GigaChat\": { \"name\": \"GigaChat\" }\n      }\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>Verf\u00fcgbare Modelle mit pers\u00f6nlichem Schl\u00fcssel finden Sie hier. Wenn Sie ein Projekt f\u00fcr einen Einzelunternehmer oder eine juristische Person mit Zugriff auf GigaChat 3 haben, f\u00fcgen Sie die erforderlichen Identifikatoren aus der Models-Methode zum Models-Block hinzu.<\/p>\n<p>Bequemer ist es, den Schl\u00fcssel selbst nicht in einer Datei zu speichern, sondern ihn an eine Umgebungsvariable zu \u00fcbergeben: Das Paket gigachat-js liest ihn automatisch. Der Bereichswert kann auch auf eine Variable festgelegt werden. Jetzt m\u00fcssen nur noch der Pfad zu den Zertifikaten festgelegt und der Agent gestartet werden:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>export GIGACHAT_CREDENTIALS=\u0432\u0430\u0448_\u043a\u043b\u044e\u0447_\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438\nexport GIGACHAT_SCOPE=GIGACHAT_API_PERS\nexport NODE_EXTRA_CA_CERTS=\/\u043f\u0443\u0442\u044c\/\u043a\/russian_trusted_ca_bundle.pem\nopencode\n<\/code><\/pre>\n<\/div>\n<p>Diese Option ist auch deshalb gut, weil das Geheimnis nicht im lokalen auth.json-Speicher landet: Es lebt nur in der Umgebung des Prozesses. Dies ist praktischer f\u00fcr CI- und einmalige Starts.<\/p>\n<h2>Modelle<\/h2>\n<p>Die Menge der verf\u00fcgbaren Modelle h\u00e4ngt vom Scope-Schl\u00fcssel ab. Der pers\u00f6nliche Schl\u00fcssel (GIGACHAT_API_PERS) steht der GigaChat- und GigaChat 2-Familie zur Verf\u00fcgung:<\/p>\n<ul>\n<li><b>GigaChat<\/b> \u2013 Basismodell.<\/li>\n<li><b>GigaChat-2<\/b> \u2013 ein schnelles und leichtes Modell f\u00fcr allt\u00e4gliche Aufgaben, angezeigt als Lite in der Benutzeroberfl\u00e4che.<\/li>\n<li><b>GigaChat-2-Pro<\/b> \u2013 ein verbessertes Modell f\u00fcr ressourcenintensive Aufgaben.<\/li>\n<li><b>GigaChat-2-Max<\/b> ist das leistungsst\u00e4rkste, das mit einem pers\u00f6nlichen Schl\u00fcssel verf\u00fcgbar ist.<\/li>\n<\/ul>\n<p>Die GigaChat 3-Familie (GigaChat-3-Ultra, GigaChat-3-Pro, offene Modelle wie GigaChat3.5-432B-A28B-Reasoning) ist im Konsolenkatalog sichtbar, steht aber nicht f\u00fcr den pers\u00f6nlichen Schl\u00fcssel zur Verf\u00fcgung: Sie erfordert ein einzelnes Unternehmerprojekt oder eine juristische Person mit dem Geltungsbereich GIGACHAT_API_B2B oder GIGACHAT_API_CORP und einen passenden Tarif. Auf einen pers\u00f6nlichen Schl\u00fcssel antwortet ein solches Modell mit einem Fehler:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\"status\":404,\"message\":\"No such model\"}\n<\/code><\/pre>\n<\/div>\n<p>Sie k\u00f6nnen \u00fcberpr\u00fcfen, was Ihr Schl\u00fcssel tats\u00e4chlich ausgibt, indem Sie die Liste der Modelle abfragen:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>curl -H \"Authorization: Bearer <\u0442\u043e\u043a\u0435\u043d_\u0434\u043e\u0441\u0442\u0443\u043f\u0430>\" https:\/\/gigachat.devices.sberbank.ru\/api\/v1\/models\n<\/code><\/pre>\n<\/div>\n<p>Noch zwei Punkte. Modell-IDs in der API stimmen nicht mit den angezeigten Namen \u00fcberein \u2013 das Light-Modell hei\u00dft <b>GigaChat-2<\/b>, nicht GigaChat-2-Lite. Und der Katalog in der Konsole zeigt nicht das Gleiche an, was f\u00fcr Ihren Schl\u00fcssel verf\u00fcgbar ist. Daher sollten Sie sich auf die Reaktion der Modellmethode und nicht auf die Preisliste konzentrieren.<\/p>\n<p>In der Schnittstelle wird die Liste der Modelle mit dem Befehl ge\u00f6ffnet:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>\/models\n<\/code><\/pre>\n<\/div>\n<p>F\u00fcr Routinearbeiten im Repository \u2013 Navigieren durch Dateien, kleinere \u00c4nderungen, Ausf\u00fchren von Tests \u2013 reicht GigaChat-2 vollkommen aus. Bei komplexen Aufgaben und Designs ist es sinnvoll, auf Pro oder Max umzusteigen.<\/p>\n<h2>Erster Start im Projekt<\/h2>\n<p>Gehen Sie in das Projektverzeichnis und starten Sie den Agenten:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>cd \u0432\u0430\u0448_\u043f\u0440\u043e\u0435\u043a\u0442\nopencode\n<\/code><\/pre>\n<\/div>\n<p>Der erste Schritt besteht darin, den Agenten zu initialisieren:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>\/init\n<\/code><\/pre>\n<\/div>\n<p>OpenCode analysiert die Projektstruktur und erstellt eine Datei <b>AGENTS.md<\/b> \u2013 Anweisungen f\u00fcr den Agenten. Es lohnt sich, diese Datei an Git zu \u00fcbergeben: Sie hilft dem Agenten, die im Projekt \u00fcbernommenen Konventionen und Muster zu verstehen.<\/p>\n<h2>Alternative: lokaler Proxy<\/h2>\n<p>Wenn Sie den NPM-Anbieter aus irgendeinem Grund nicht verwenden m\u00f6chten, liefert ein lokaler Proxy das gleiche Ergebnis. Das GigaChat-Team verf\u00fcgt \u00fcber einen offiziellen <b>gpt2giga<\/b> \u2013 FastAPI-Dienst, der Anfragen im OpenAI-, Anthropic- und Gemini-Format in die GigaChat-API \u00fcbersetzt und das Zugriffstoken selbst aktualisiert. Es wird lokal auf Port 8090 ausgel\u00f6st, woraufhin ein regul\u00e4rer OpenAI-kompatibler Anbieter in OpenCode \u00fcber das Paket <b>@ai-sdk\/openai-kompatible<\/b> mit der Basisadresse http:\/\/localhost:8090\/v1 konfiguriert wird. Der Nachteil dieses Weges besteht darin, dass Sie neben OpenCode auch einen laufenden Python-Dienst aufrechterhalten m\u00fcssen.<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"provider\": {\n    \"gigachat\": {\n      \"npm\": \"@ai-sdk\/openai-compatible\",\n      \"name\": \"GigaChat (proxy)\",\n      \"options\": {\n        \"baseURL\": \"http:\/\/localhost:8090\/v1\"\n      },\n      \"models\": {\n        \"GigaChat-2-Max\": { \"name\": \"GigaChat 2 Max\" }\n      }\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<h2>DeepSeek und andere Modelle \u00fcber Cloud.ru<\/h2>\n<p>Die GigaChat-API selbst verf\u00fcgt nicht \u00fcber DeepSeek-Modelle: Es gibt nur die GigaChat-Familie und Modelle f\u00fcr Einbettungen. Wenn Sie DeepSeek in OpenCode ben\u00f6tigen, aber \u00fcber ein russisches Cloud-Gateway, ist der Foundation Models-Dienst von Cloud.ru geeignet. Es liefert Modelle mithilfe des OpenAI-kompatiblen Protokolls und ist daher \u00fcber das Standardpaket <b>@ai-sdk\/openai-kompatible<\/b> verbunden.<\/p>\n<p>Im Cloud.ru Foundation Models-Katalog gibt es beispielsweise folgende Modelle:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>deepseek-ai\/DeepSeek-V4.1-Flash\ndeepseek-ai\/DeepSeek-V4-Flash\ndeepseek-ai\/DeepSeek-V4-Pro\n<\/code><\/pre>\n<\/div>\n<p>Der Schl\u00fcssel wird in der Cloud.ru-Konsole ausgegeben: Abschnitt Benutzer, Registerkarte Dienstkonten. Wir erstellen ein Dienstkonto auf Projektebene und erstellen dann in seinen Anmeldeinformationen einen API-Schl\u00fcssel mit dem Foundation Models-Dienst. Das Schl\u00fcsselgeheimnis wird einmalig angezeigt und wir speichern es.<\/p>\n<p>Die Anbieterkonfiguration in opencode.json sieht folgenderma\u00dfen aus:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"provider\": {\n    \"cloudru\": {\n      \"npm\": \"@ai-sdk\/openai-compatible\",\n      \"name\": \"Cloud.ru Foundation Models\",\n      \"options\": {\n        \"baseURL\": \"https:\/\/foundation-models.api.cloud.ru\/v1\",\n        \"apiKey\": \"{env:CLOUDRU_API_KEY}\"\n      },\n      \"models\": {\n        \"deepseek-ai\/DeepSeek-V4.1-Flash\": { \"name\": \"DeepSeek V4.1 Flash\", \"limit\": { \"context\": 1048576, \"output\": 1048576 } },\n        \"deepseek-ai\/DeepSeek-V4-Flash\": { \"name\": \"DeepSeek V4 Flash\", \"limit\": { \"context\": 1048576, \"output\": 1048576 } },\n        \"deepseek-ai\/DeepSeek-V4-Pro\": { \"name\": \"DeepSeek V4 Pro\", \"limit\": { \"context\": 1048576, \"output\": 1048576 } }\n      }\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>Wir \u00fcbergeben den Schl\u00fcssel an die Umgebungsvariable:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>export CLOUDRU_API_KEY=\u0432\u0430\u0448_\u043a\u043b\u044e\u0447_cloudru\nopencode\n<\/code><\/pre>\n<\/div>\n<p>Zertifikate des Ministeriums f\u00fcr digitale Entwicklung sind hier nicht erforderlich: Die Domain api.cloud.ru verf\u00fcgt im Gegensatz zu GigaChat \u00fcber regul\u00e4res TLS. Es lohnt sich jedoch, die Ausgewogenheit des Projekts zu \u00fcberwachen. Wenn das Konto Null ist, ist die Autorisierung erfolgreich und Anfragen werden mit der Abrechnungsantwort verworfen:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\"message\":\"Not enough money\"}\n<\/code><\/pre>\n<\/div>\n<p>Dies ist kein Konfigurationsfehler, sondern ein Signal, dass Sie das Projekt in der Cloud.ru-Konsole aktualisieren m\u00fcssen.<\/p>\n<h2>Worauf Sie achten sollten<\/h2>\n<p>Ein paar praktische Punkte, die bei der Ersteinrichtung am h\u00e4ufigsten im Weg stehen:<\/p>\n<ul>\n<li><b>Fehler bei der Zertifikats\u00fcberpr\u00fcfung.<\/b> Die Meldung \u00fcber ein selbstsigniertes Zertifikat in der Kette bedeutet, dass die Variable NODE_EXTRA_CA_CERTS nicht erfasst wurde. \u00dcberpr\u00fcfen Sie den Pfad zur Datei, ob der Agent in derselben Umgebung ausgef\u00fchrt wird, und die Datei selbst: Wenn beim Zusammenf\u00fchren zweier Zertifikate mit cat deren Enden in derselben Zeile landen, gibt LibreSSL eine fehlerhafte Endzeile zur\u00fcck und das Bundle muss \u00fcber openSL neu erstellt werden, wie im Abschnitt \u00fcber Zertifikate beschrieben.<\/li>\n<li><b>Fehler 401.<\/b> In der Regel handelt es sich hierbei um einen falschen Autorisierungsschl\u00fcssel oder einen nicht \u00fcbereinstimmenden Bereich \u2013 f\u00fcr eine Einzelperson ben\u00f6tigen Sie GIGACHAT_API_PERS.<\/li>\n<li><b>Fehler 404 mit dem Text \u201eKein solches Modell\u201c.<\/b> Hierbei handelt es sich nicht um einen Verbindungsfehler, sondern um einen fehlenden Zugriff auf ein bestimmtes Modell. Entfernen Sie es aus der Konfiguration oder ersetzen Sie es durch ein verf\u00fcgbares. In einer Nachricht wie GigaChat 404: Unbekannter Fehler ist dieselbe GigaChat-Antwort schuld \u2013 der Anbieter konnte den Fehlertext einfach nicht analysieren.<\/li>\n<li><b>Kosten.<\/b> OpenCode erfordert kein Abonnement: Sie zahlen GigaChat direkt, wenn Sie Token ausgeben, sodass der Preis f\u00fcr lange Sitzungen vorhersehbar ist.<\/li>\n<li><b>Modellqualit\u00e4t.<\/b> Bei komplexen Architekturaufgaben unterscheiden sich Modelle verschiedener Klassen, daher ist es f\u00fcr das Design sinnvoll, ein st\u00e4rkeres Modell zu nehmen und die Routine einem schnelleren zu \u00fcbergeben.<\/li>\n<\/ul>\n<h2>Links<\/h2>\n<p><a href=\"https:\/\/opencode.ai\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/<\/a><br \/>\n<a href=\"https:\/\/opencode.ai\/docs\/providers\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/providers\/<\/a><br \/>\n<a href=\"https:\/\/developers.sber.ru\/studio\/\" rel=\"noopener\" target=\"_blank\">https:\/\/developers.sber.ru\/studio\/<\/a><br \/>\n<a href=\"https:\/\/developers.sber.ru\/docs\/ru\/gigachat\/guides\/main\" rel=\"noopener\" target=\"_blank\">https:\/\/developers.sber.ru\/docs\/ru\/gigachat\/guides\/main<\/a><br \/>\n<a href=\"https:\/\/github.com\/nyddle\/gigachat-ai-sdk-provider\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/nyddle\/gigachat-ai-sdk-provider<\/a><br \/>\n<a href=\"https:\/\/github.com\/ai-forever\/gpt2giga\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/ai-forever\/gpt2giga<\/a><br \/>\n<a href=\"https:\/\/cloud.ru\/docs\/foundation-models\/ug\/topics\/quickstart\" rel=\"noopener\" target=\"_blank\">https:\/\/cloud.ru\/docs\/foundation-models\/ug\/topics\/quickstart<\/a><\/p>\n<h2>Quellen<\/h2>\n<p><a href=\"https:\/\/opencode.ai\/docs\/providers\/#custom-provider\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/providers\/#custom-provider<\/a><br \/>\n<a href=\"https:\/\/developers.sber.ru\/docs\/ru\/gigachat\/certificates\" rel=\"noopener\" target=\"_blank\">https:\/\/developers.sber.ru\/docs\/ru\/gigachat\/certificates<\/a><br \/>\n<a href=\"https:\/\/developers.sber.ru\/docs\/ru\/gigachat\/models\/main\" rel=\"noopener\" target=\"_blank\">https:\/\/developers.sber.ru\/docs\/ru\/gigachat\/models\/main<\/a><br \/>\n<a href=\"https:\/\/developers.sber.ru\/docs\/ru\/gigachat\/guides\/selecting-a-model\" rel=\"noopener\" target=\"_blank\">https:\/\/developers.sber.ru\/docs\/ru\/gigachat\/guides\/selecting-a-model<\/a><br \/>\n<a href=\"https:\/\/github.com\/nyddle\/gigachat-ai-sdk-provider\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/nyddle\/gigachat-ai-sdk-provider<\/a><br \/>\n<a href=\"https:\/\/github.com\/ai-forever\/gpt2giga\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/ai-forever\/gpt2giga<\/a><br \/>\n<a href=\"https:\/\/cloud.ru\/docs\/foundation-models\/ug\/topics\/quickstart\" rel=\"noopener\" target=\"_blank\">https:\/\/cloud.ru\/docs\/foundation-models\/ug\/topics\/quickstart<\/a><br \/>\n<a href=\"https:\/\/cloud.ru\/docs\/foundation-models\/ug\/topics\/overview__available__models\" rel=\"noopener\" target=\"_blank\">https:\/\/cloud.ru\/docs\/foundation-models\/ug\/topics\/overview__available__models<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenCode ist ein offener Programmieragent, der direkt im Terminal arbeitet: Projektdateien liest, Code bearbeitet, Befehle und Tests ausf\u00fchrt, das Repository durchsucht und mit Git arbeitet. Seine St\u00e4rke liegt darin, dass es nicht an einen Modellanbieter gebunden ist und Dutzende Anbieter verbinden kann. GigaChat ist ein gro\u00dfes Sprachmodell von Sber. Es ist nicht in der Liste [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-196","post","type-post","status-publish","format-standard","hentry","category-notes"],"translation":{"provider":"WPGlobus","version":"3.0.6","language":"de","enabled_languages":["en","ru","zh","de","ja","fr","es","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"es":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/196","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=196"}],"version-history":[{"count":0,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/196\/revisions"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=196"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}