Code-Beispiele
Praktische Code-Beispiele und Vorlagen, die Ihnen helfen, das Beste aus Gemini CLI herauszuholen. Von der grundlegenden Nutzung bis hin zu erweiterten Automatisierungs- und Integrationsmustern.
Beispiel-Kategorien
Wählen Sie eine Kategorie, um verwandte Beispiele zu erkunden
Grundlegende Nutzung
Einfache Beispiele für den Einstieg in Gemini CLI
Einfacher Chat
Grundlegende Unterhaltung mit Gemini beginnen
# Interaktiven Chat starten
gemini chat
# Eine Frage stellen
gemini ask "Was ist maschinelles Lernen?"
# Mit spezifischem Modell fragen
gemini ask "Quantencomputing erklären" --model gemini-pro
Datei-Analyse
Code-Dateien mit KI-Unterstützung analysieren
# Einzelne Datei analysieren
gemini analyze src/main.js
# Mehrere Dateien analysieren
gemini analyze src/*.js --type code-review
# Code-Vorschläge erhalten
gemini analyze package.json --suggest-improvements
Konfigurationsverwaltung
Grundlegende Konfigurationsverwaltung
# Aktuelle Konfiguration anzeigen
gemini config list
# Standardmodell festlegen
gemini config set model gemini-pro
# Temperatur festlegen
gemini config set temperature 0.7
# Auf Standardwerte zurücksetzen
gemini config reset
Automatisierungsskripte
Skripte zur Automatisierung von Entwicklungsaufgaben
Code-Review-Skript
Automatisierte Code-Überprüfung für Pull-Requests
#!/bin/bash
# code-review.sh - Automatisiertes Code-Review-Skript
# Geänderte Dateien abrufen
CHANGED_FILES=\$(git diff --name-only HEAD~1)
echo "🔍 Automatisierte Code-Überprüfung wird gestartet..."
for file in $CHANGED_FILES; do
if [[ $file == *.js || $file == *.ts || $file == *.py ]]; then
echo "📝 Überprüfung läuft: $file"
# Datei analysieren
gemini analyze "$file" \
--type code-review \
--prompt "Überprüfen Sie diesen Code auf Fehler, Leistungsprobleme und bewährte Praktiken" \
--output review-$file.md
fi
done
echo "✅ Code-Überprüfung abgeschlossen! Überprüfen Sie die review-*.md Dateien"
Dokumentations-Generator
Dokumentation aus Code generieren
#!/bin/bash
# generate-docs.sh - Automatische Dokumentationsgenerierung
echo "📚 Dokumentation wird generiert..."
# API-Dokumentation generieren
gemini analyze src/api/*.js \
--prompt "Umfassende API-Dokumentation mit Beispielen generieren" \
--output docs/api.md
# README generieren
gemini ask "README.md für dieses Projekt basierend auf der Codebasis erstellen" \
--context src/ \
--output README.md
# Changelog generieren
git log --oneline --since="1 month ago" | \
gemini ask "Diese Git-Commits in ein Changelog umwandeln" \
--output CHANGELOG.md
echo "✅ Dokumentationsgenerierung abgeschlossen!"
Test-Generator
Automatisch Unit-Tests generieren
#!/bin/bash
# generate-tests.sh - Automatische Unit-Test-Generierung
SOURCE_DIR="src"
TEST_DIR="tests"
echo "🧪 Unit-Tests werden generiert..."
find $SOURCE_DIR -name "*.js" -o -name "*.ts" | while read file; do
# Relativen Pfad erhalten
rel_path=\$\{file#\$SOURCE_DIR/\}
test_file="\$TEST_DIR/\$\{rel_path%.*\}.test.\$\{file##*.\}"
echo "📝 Tests werden generiert für: $file"
gemini analyze "$file" \
--prompt "Umfassende Unit-Tests mit Grenzfällen generieren" \
--template jest \
--output "$test_file"
done
echo "✅ Test-Generierung abgeschlossen!"
Integrationsbeispiele
Gemini CLI mit anderen Tools und Workflows integrieren
GitHub Actions Workflow
CI/CD-Integration mit GitHub Actions
name: KI Code-Review
on:
pull_request:
types: [opened, synchronize]
jobs:
ai-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Node.js einrichten
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Gemini CLI installieren
run: npm install -g @google/generative-ai-cli
- name: Gemini CLI konfigurieren
run: |
gemini config set api-key \$\{\{ secrets.GEMINI_API_KEY \}\}
gemini config set model gemini-pro
- name: Geänderte Dateien abrufen
id: changed-files
run: |
echo "files=\$(git diff --name-only HEAD~1 | tr '\n' ' ')" >> $GITHUB_OUTPUT
- name: KI Code-Review
run: |
for file in \$\{\{ steps.changed-files.outputs.files \}\}; do
if [[ $file == *.js || $file == *.ts || $file == *.py ]]; then
gemini analyze "$file" \
--type code-review \
--output "review-$file.md"
fi
done
- name: PR kommentieren
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const reviews = fs.readdirSync('.').filter(f => f.startsWith('review-'));
let comment = '## 🤖 KI Code-Review\n\n';
reviews.forEach(file => {
const content = fs.readFileSync(file, 'utf8');
comment += `### ${file}\n${content}\n\n`;
});
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment
});
VS Code Erweiterung
Benutzerdefinierte VS Code Erweiterungsintegration
// extension.js - VS Code Erweiterung für Gemini CLI
const vscode = require('vscode');
const { exec } = require('child_process');
function activate(context) {
// Befehl: Code erklären
let explainCommand = vscode.commands.registerCommand(
'gemini.explainCode',
async () => {
const editor = vscode.window.activeTextEditor;
if (!editor) return;
const selection = editor.selection;
const text = editor.document.getText(selection);
if (!text) {
vscode.window.showErrorMessage('Bitte wählen Sie Code zum Erklären aus');
return;
}
// Fortschritt anzeigen
vscode.window.withProgress({
location: vscode.ProgressLocation.Notification,
title: "Code wird mit Gemini erklärt...",
cancellable: false
}, async () => {
return new Promise((resolve, reject) => {
exec(`echo "${text}" | gemini ask "Erkläre diesen Code"`,
(error, stdout, stderr) => {
if (error) {
vscode.window.showErrorMessage(`Fehler: ${error.message}`);
reject(error);
return;
}
// Erklärung in neuem Dokument anzeigen
vscode.workspace.openTextDocument({
content: stdout,
language: 'markdown'
}).then(doc => {
vscode.window.showTextDocument(doc);
resolve();
});
});
});
});
}
);
context.subscriptions.push(explainCommand);
}
function deactivate() {}
module.exports = { activate, deactivate };
Docker Integration
Gemini CLI in Containern verwenden
# Dockerfile - Gemini CLI Container
FROM node:18-alpine
# Gemini CLI installieren
RUN npm install -g @google/generative-ai-cli
# Arbeitsverzeichnis festlegen
WORKDIR /app
# Projektdateien kopieren
COPY . .
# Umgebungsvariablen festlegen
ENV GEMINI_API_KEY=""
# Analyseskript erstellen
RUN echo '#!/bin/sh' > /usr/local/bin/analyze-project && \
echo 'gemini analyze src/ --output analysis.md' >> /usr/local/bin/analyze-project && \
chmod +x /usr/local/bin/analyze-project
# Standardbefehl
CMD ["analyze-project"]
Erweiterte Nutzung
Komplexe Szenarien und erweiterte Funktionen
Benutzerdefinierte Tool-Entwicklung
Benutzerdefinierte Tools für spezifische Aufgaben erstellen
// custom-tools.js - Benutzerdefinierte Tool-Definitionen
const tools = {
// Datenbankabfrage-Tool
database_query: {
name: 'database_query',
description: 'SQL-Abfragen auf der Datenbank ausführen',
parameters: {
query: { type: 'string', required: true },
database: { type: 'string', default: 'main' }
},
execute: async ({ query, database }) => {
const db = require('./db-connection');
try {
const result = await db.query(query, database);
return JSON.stringify(result, null, 2);
} catch (error) {
return `Fehler: ${error.message}`;
}
}
},
// API-Test-Tool
api_test: {
name: 'api_test',
description: 'API-Endpunkte testen',
parameters: {
url: { type: 'string', required: true },
method: { type: 'string', default: 'GET' },
headers: { type: 'object', default: {} },
body: { type: 'object', default: null }
},
execute: async ({ url, method, headers, body }) => {
const fetch = require('node-fetch');
try {
const response = await fetch(url, {
method,
headers,
body: body ? JSON.stringify(body) : undefined
});
const data = await response.text();
return `Status: ${response.status}\nAntwort: ${data}`;
} catch (error) {
return `Fehler: ${error.message}`;
}
}
},
// Code-Formatierungs-Tool
format_code: {
name: 'format_code',
description: 'Code mit prettier formatieren',
parameters: {
code: { type: 'string', required: true },
language: { type: 'string', default: 'javascript' }
},
execute: async ({ code, language }) => {
const prettier = require('prettier');
try {
const formatted = prettier.format(code, {
parser: language === 'typescript' ? 'typescript' : 'babel',
semi: true,
singleQuote: true,
tabWidth: 2
});
return formatted;
} catch (error) {
return `Fehler: ${error.message}`;
}
}
}
};
// Tools bei Gemini CLI registrieren
Object.values(tools).forEach(tool => {
process.env.GEMINI_TOOLS = JSON.stringify([
...(JSON.parse(process.env.GEMINI_TOOLS || '[]')),
tool
]);
});
module.exports = tools;
Stapelverarbeitung
Mehrere Dateien oder Aufgaben stapelweise verarbeiten
#!/bin/bash
# batch-process.sh - Stapelverarbeitung mit Gemini CLI
BATCH_SIZE=5
CONCURRENT_JOBS=3
# Funktion zur Verarbeitung einer einzelnen Datei
process_file() {
local file=$1
local task=$2
echo "🔄 Verarbeitung: $file"
case $task in
"translate")
gemini ask "Diese Code-Kommentare ins Englische übersetzen" \
--file "$file" \
--output "${file%.js}.en.js"
;;
"optimize")
gemini analyze "$file" \
--prompt "Diesen Code für Leistung optimieren" \
--output "${file%.js}.optimized.js"
;;
"document")
gemini analyze "$file" \
--prompt "Umfassende JSDoc-Kommentare hinzufügen" \
--output "${file%.js}.documented.js"
;;
esac
echo "✅ Abgeschlossen: $file"
}
# Haupt-Stapelverarbeitungsfunktion
batch_process() {
local task=$1
shift
local files=("$@")
echo "🚀 Stapelverarbeitung starten: $task"
echo "📁 Zu verarbeitende Dateien: ${#files[@]}"
# Dateien stapelweise verarbeiten
for ((i=0; i<${#files[@]}; i+=BATCH_SIZE)); do
batch=("${files[@]:i:BATCH_SIZE}")
echo "📦 Stapel $((i/BATCH_SIZE + 1)) verarbeiten"
# Stapel mit begrenzter Parallelität verarbeiten
for file in "${batch[@]}"; do
(($(jobs -r | wc -l) >= CONCURRENT_JOBS)) && wait
process_file "$file" "$task" &
done
wait # Auf Abschluss des aktuellen Stapels warten
done
echo "🎉 Stapelverarbeitung abgeschlossen!"
}
# Verwendungsbeispiele
case $1 in
"translate")
batch_process "translate" src/**/*.js
;;
"optimize")
batch_process "optimize" src/**/*.js
;;
"document")
batch_process "document" src/**/*.js
;;
*)
echo "Verwendung: $0 {translate|optimize|document}"
exit 1
;;
esac
Benötigen Sie weitere Hilfe?
Erkunden Sie weitere Ressourcen und Dokumentation