Guides Pratiques
Guides pratiques pour résoudre des problèmes spécifiques avec gomcptest
Les guides pratiques sont des recettes orientées problème qui vous guident à travers les étapes impliquées dans la résolution de problèmes clés et de cas d’utilisation. Ils sont pragmatiques et orientés vers des objectifs.
Ces guides vous aideront à résoudre des tâches spécifiques et à personnaliser gomcptest pour vos besoins.
1 - How to Create a Custom MCP Tool
Build your own Model Context Protocol (MCP) compatible tools
This guide shows you how to create a new custom tool that’s compatible with the Model Context Protocol (MCP) in gomcptest.
Prerequisites
- A working installation of gomcptest
- Go programming knowledge
- Understanding of the MCP protocol basics
mkdir -p tools/YourToolName/cmd
2. Create the README.md file
Create a README.md
in the tool directory with documentation:
touch tools/YourToolName/README.md
Include the following sections:
- Tool description
- Parameters
- Usage notes
- Example
3. Create the main.go file
Create a main.go
file in the cmd directory:
touch tools/YourToolName/cmd/main.go
Here’s a template to start with:
package main
import (
"encoding/json"
"fmt"
"log"
"os"
"github.com/mark3labs/mcp-go"
)
// Define your tool's parameters structure
type Params struct {
// Add your parameters here
// Example:
InputParam string `json:"input_param"`
}
func main() {
server := mcp.NewServer()
// Register your tool function
server.RegisterFunction("YourToolName", func(params json.RawMessage) (any, error) {
var p Params
if err := json.Unmarshal(params, &p); err != nil {
return nil, fmt.Errorf("failed to parse parameters: %w", err)
}
// Implement your tool's logic here
result := doSomethingWithParams(p)
return result, nil
})
if err := server.Run(os.Stdin, os.Stdout); err != nil {
log.Fatalf("Server error: %v", err)
}
}
func doSomethingWithParams(p Params) interface{} {
// Your tool's core functionality
// ...
// Return the result
return map[string]interface{}{
"result": "Your processed result",
}
}
Open the Makefile in the root directory and add your tool:
YourToolName:
go build -o bin/YourToolName tools/YourToolName/cmd/main.go
Also add it to the all
target.
Test the tool directly:
echo '{"name":"YourToolName","params":{"input_param":"test"}}' | ./bin/YourToolName
8. Use with the CLI
Add your tool to the CLI command:
./bin/cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./YourToolName;./dispatch_agent;./Bash;./Replace"
- Focus on a single, well-defined purpose
- Provide clear error messages
- Include meaningful response formatting
- Implement proper parameter validation
- Handle edge cases gracefully
- Consider adding unit tests in a _test.go file
2 - How to Configure the OpenAI-Compatible Server
Customize the OpenAI-compatible server for different use cases
This guide shows you how to configure and customize the OpenAI-compatible server in gomcptest for different use cases.
Prerequisites
- A working installation of gomcptest
- Basic familiarity with the OpenAI server from the tutorial
- Understanding of environment variables and configuration
Environment Variables Configuration
Basic Server Configuration
The OpenAI server can be configured using the following environment variables:
# Server port (default: 8080)
export PORT=8080
# Log level: DEBUG, INFO, WARN, ERROR (default: INFO)
export LOG_LEVEL=INFO
# Directory to store images (required)
export IMAGE_DIR=/path/to/image/directory
GCP Configuration
Configure the Google Cloud Platform integration:
# GCP Project ID (required)
export GCP_PROJECT=your-gcp-project-id
# GCP Region (default: us-central1)
export GCP_REGION=us-central1
# Comma-separated list of Gemini models (default: gemini-1.5-pro,gemini-2.0-flash)
export GEMINI_MODELS=gemini-1.5-pro,gemini-2.0-flash
# Comma-separated list of Imagen models (optional)
export IMAGEN_MODELS=imagen-3.0-generate-002
Setting Up a Production Environment
For a production environment, create a proper systemd service file:
sudo nano /etc/systemd/system/gomcptest-openai.service
Add the following content:
[Unit]
Description=gomcptest OpenAI Server
After=network.target
[Service]
User=yourusername
WorkingDirectory=/path/to/gomcptest/host/openaiserver
ExecStart=/path/to/gomcptest/host/openaiserver/openaiserver -mcpservers "/path/to/gomcptest/bin/GlobTool;/path/to/gomcptest/bin/GrepTool;/path/to/gomcptest/bin/LS;/path/to/gomcptest/bin/View;/path/to/gomcptest/bin/Bash;/path/to/gomcptest/bin/Replace"
Environment=PORT=8080
Environment=LOG_LEVEL=INFO
Environment=IMAGE_DIR=/path/to/image/directory
Environment=GCP_PROJECT=your-gcp-project-id
Environment=GCP_REGION=us-central1
Environment=GEMINI_MODELS=gemini-1.5-pro,gemini-2.0-flash
Restart=on-failure
[Install]
WantedBy=multi-user.target
Then enable and start the service:
sudo systemctl enable gomcptest-openai
sudo systemctl start gomcptest-openai
To add custom MCP tools to the server, include them in the -mcpservers
parameter when starting the server:
go run . -mcpservers "../bin/GlobTool;../bin/GrepTool;../bin/LS;../bin/View;../bin/YourCustomTool;../bin/Bash;../bin/Replace"
Some tools require additional parameters. You can specify these after the tool path:
go run . -mcpservers "../bin/GlobTool;../bin/dispatch_agent -glob-path ../bin/GlobTool -grep-path ../bin/GrepTool -ls-path ../bin/LS -view-path ../bin/View"
API Usage Configuration
Enabling CORS
For web applications, you may need to enable CORS. Add a middleware to the main.go file:
package main
import (
"net/http"
// other imports
)
// CORS middleware
func corsMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
if r.Method == "OPTIONS" {
w.WriteHeader(http.StatusOK)
return
}
next.ServeHTTP(w, r)
})
}
func main() {
// existing code...
http.Handle("/", corsMiddleware(openAIHandler))
// existing code...
}
Setting Rate Limits
Add a simple rate limiting middleware:
package main
import (
"net/http"
"sync"
"time"
// other imports
)
type RateLimiter struct {
requests map[string][]time.Time
maxRequests int
timeWindow time.Duration
mu sync.Mutex
}
func NewRateLimiter(maxRequests int, timeWindow time.Duration) *RateLimiter {
return &RateLimiter{
requests: make(map[string][]time.Time),
maxRequests: maxRequests,
timeWindow: timeWindow,
}
}
func (rl *RateLimiter) Middleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ip := r.RemoteAddr
rl.mu.Lock()
// Clean up old requests
now := time.Now()
if reqs, exists := rl.requests[ip]; exists {
var validReqs []time.Time
for _, req := range reqs {
if now.Sub(req) <= rl.timeWindow {
validReqs = append(validReqs, req)
}
}
rl.requests[ip] = validReqs
}
// Check if rate limit is exceeded
if len(rl.requests[ip]) >= rl.maxRequests {
rl.mu.Unlock()
http.Error(w, "Rate limit exceeded", http.StatusTooManyRequests)
return
}
// Add current request
rl.requests[ip] = append(rl.requests[ip], now)
rl.mu.Unlock()
next.ServeHTTP(w, r)
})
}
func main() {
// existing code...
rateLimiter := NewRateLimiter(10, time.Minute) // 10 requests per minute
http.Handle("/", rateLimiter.Middleware(corsMiddleware(openAIHandler)))
// existing code...
}
Adjusting Memory Usage
For high-load scenarios, adjust Go’s garbage collector:
export GOGC=100 # Default is 100, lower values lead to more frequent GC
Increasing Concurrency
If handling many concurrent requests, adjust the server’s concurrency limits:
package main
import (
"net/http"
// other imports
)
func main() {
// existing code...
server := &http.Server{
Addr: ":" + strconv.Itoa(cfg.Port),
Handler: openAIHandler,
ReadTimeout: 30 * time.Second,
WriteTimeout: 120 * time.Second,
IdleTimeout: 120 * time.Second,
MaxHeaderBytes: 1 << 20,
}
err = server.ListenAndServe()
// existing code...
}
Troubleshooting Common Issues
Debugging Connection Problems
If you’re experiencing connection issues, set the log level to DEBUG:
Common Error Messages
- Failed to create MCP client: Ensure the tool path is correct and the tool is executable
- Failed to load GCP config: Check your GCP environment variables
- Error in LLM request: Verify your GCP credentials and project access
To verify tools are registered correctly, look for log messages like:
INFO server0 Registering command=../bin/GlobTool
INFO server1 Registering command=../bin/GrepTool
3 - Comment Configurer l'Interface en Ligne de Commande cliGCP
Personnaliser l’outil cliGCP avec des variables d’environnement et des options de ligne de commande
Ce guide vous montre comment configurer et personnaliser l’interface en ligne de commande cliGCP pour divers cas d’utilisation.
Prérequis
- Une installation fonctionnelle de gomcptest
- Une familiarité de base avec l’outil cliGCP à partir du tutoriel
- Compréhension des variables d’environnement et de la configuration
Arguments de Ligne de Commande
L’outil cliGCP accepte les arguments de ligne de commande suivants :
# Spécifier les serveurs MCP à utiliser (requis)
-mcpservers "outil1;outil2;outil3"
# Exemple avec des arguments d'outil
./cliGCP -mcpservers "./GlobTool;./GrepTool;./dispatch_agent -glob-path ./GlobTool -grep-path ./GrepTool -ls-path ./LS -view-path ./View;./Bash"
Configuration des Variables d’Environnement
Configuration GCP
Configurez l’intégration avec Google Cloud Platform avec ces variables d’environnement :
# ID du projet GCP (requis)
export GCP_PROJECT=votre-id-de-projet-gcp
# Région GCP (par défaut : us-central1)
export GCP_REGION=us-central1
# Liste de modèles Gemini séparés par des virgules (requis)
export GEMINI_MODELS=gemini-1.5-pro,gemini-2.0-flash
# Répertoire pour stocker les images (requis pour la génération d'images)
export IMAGE_DIR=/chemin/vers/repertoire/images
Configuration Avancée
Vous pouvez personnaliser le comportement de l’outil cliGCP avec ces variables d’environnement supplémentaires :
# Définir une instruction système personnalisée pour le modèle
export SYSTEM_INSTRUCTION="Vous êtes un assistant utile spécialisé dans la programmation Go."
# Ajuster la température du modèle (0.0-1.0, la valeur par défaut est 0.2)
# Les valeurs plus basses rendent la sortie plus déterministe, les valeurs plus élevées plus créatives
export MODEL_TEMPERATURE=0.3
# Définir une limite maximale de tokens pour les réponses
export MAX_OUTPUT_TOKENS=2048
Création d’Alias Shell
Pour simplifier l’utilisation, créez des alias shell dans votre .bashrc
ou .zshrc
:
# Ajouter à ~/.bashrc ou ~/.zshrc
alias gpt='cd /chemin/vers/gomcptest/bin && ./cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./Bash;./Replace"'
# Créer des alias spécialisés pour différentes tâches
alias assistant-code='cd /chemin/vers/gomcptest/bin && GCP_PROJECT=votre-projet GEMINI_MODELS=gemini-2.0-flash ./cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./Bash;./Replace"'
alias scanner-securite='cd /chemin/vers/gomcptest/bin && SYSTEM_INSTRUCTION="Vous êtes un expert en sécurité concentré sur la recherche de vulnérabilités dans le code" ./cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./Bash"'
Personnalisation de l’Instruction Système
Pour modifier l’instruction système par défaut, éditez le fichier agent.go
:
// Dans host/cliGCP/cmd/agent.go
genaimodels[model].SystemInstruction = &genai.Content{
Role: "user",
Parts: []genai.Part{
genai.Text("Vous êtes un agent utile avec accès à des outils. " +
"Votre travail est d'aider l'utilisateur en effectuant des tâches à l'aide de ces outils. " +
"Vous ne devez pas inventer d'informations. " +
"Si vous ne savez pas quelque chose, dites-le et expliquez ce que vous auriez besoin de savoir pour aider. " +
"Si aucune indication, utilisez le répertoire de travail actuel qui est " + cwd),
},
}
Création de Configurations Spécifiques aux Tâches
Pour différents cas d’utilisation, vous pouvez créer des scripts de configuration spécialisés :
Assistant de Revue de Code
Créez un fichier appelé reviseur-code.sh
:
#!/bin/bash
export GCP_PROJECT=votre-id-de-projet-gcp
export GCP_REGION=us-central1
export GEMINI_MODELS=gemini-2.0-flash
export IMAGE_DIR=/tmp/images
export SYSTEM_INSTRUCTION="Vous êtes un expert en revue de code. Analysez le code pour détecter les bugs, les problèmes de sécurité et les domaines à améliorer. Concentrez-vous sur la fourniture de commentaires constructifs et d'explications détaillées."
cd /chemin/vers/gomcptest/bin
./cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./Bash"
Rendez-le exécutable :
chmod +x reviseur-code.sh
Générateur de Documentation
Créez un fichier appelé generateur-doc.sh
:
#!/bin/bash
export GCP_PROJECT=votre-id-de-projet-gcp
export GCP_REGION=us-central1
export GEMINI_MODELS=gemini-2.0-flash
export IMAGE_DIR=/tmp/images
export SYSTEM_INSTRUCTION="Vous êtes un spécialiste de la documentation. Votre tâche est d'aider à créer une documentation claire et complète pour le code. Analysez la structure du code et créez une documentation appropriée en suivant les meilleures pratiques."
cd /chemin/vers/gomcptest/bin
./cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./Bash;./Replace"
Configurations Avancées d’Outils
Configuration de dispatch_agent
Lorsque vous utilisez l’outil dispatch_agent, vous pouvez configurer son comportement avec des arguments supplémentaires :
./cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./dispatch_agent -glob-path ./GlobTool -grep-path ./GrepTool -ls-path ./LS -view-path ./View -timeout 30s;./Bash;./Replace"
Création de Combinaisons d’Outils
Vous pouvez créer des combinaisons d’outils spécialisées pour différentes tâches :
# Ensemble d'outils pour le développement web
./cliGCP -mcpservers "./GlobTool -include '*.{html,css,js}';./GrepTool;./LS;./View;./Bash;./Replace"
# Ensemble d'outils pour le développement Go
./cliGCP -mcpservers "./GlobTool -include '*.go';./GrepTool;./LS;./View;./Bash;./Replace"
Résolution des Problèmes Courants
Problèmes de Connexion au Modèle
Si vous rencontrez des difficultés pour vous connecter au modèle Gemini :
- Vérifiez vos identifiants GCP :
gcloud auth application-default print-access-token
- Vérifiez que l’API Vertex AI est activée :
gcloud services list --enabled | grep aiplatform
- Vérifiez que votre projet a accès aux modèles que vous demandez
Échecs d’Exécution d’Outils
Si les outils échouent à s’exécuter :
- Assurez-vous que les chemins des outils sont corrects
- Vérifiez que les outils sont exécutables
- Vérifiez les problèmes de permission dans les répertoires auxquels vous accédez
Pour de meilleures performances :
- Utilisez des modèles d’outils plus spécifiques pour réduire la portée de la recherche
- Envisagez de créer des agents spécialisés pour différentes tâches
- Définissez une température plus basse pour des réponses plus déterministes
4 - Comment Utiliser le Serveur OpenAI avec big-AGI
Configurer le serveur compatible OpenAI de gomcptest comme backend pour big-AGI
Ce guide vous montre comment configurer le serveur compatible OpenAI de gomcptest pour fonctionner avec big-AGI, un client web open-source populaire pour les assistants IA.
Prérequis
- Une installation fonctionnelle de gomcptest
- Le serveur compatible OpenAI en cours d’exécution (voir le tutoriel du serveur OpenAI)
- Node.js (version 18.17.0 ou plus récente)
- Git
Pourquoi Utiliser big-AGI avec gomcptest ?
big-AGI fournit une interface web soignée et riche en fonctionnalités pour interagir avec des modèles d’IA. En le connectant au serveur compatible OpenAI de gomcptest, vous obtenez :
- Une interface web professionnelle pour vos interactions avec l’IA
- Support pour les outils/appels de fonction
- Gestion de l’historique des conversations
- Gestion des personas
- Capacités de génération d’images
- Support pour plusieurs utilisateurs
Configuration de big-AGI
Cloner le dépôt big-AGI :
git clone https://github.com/enricoros/big-agi.git
cd big-agi
Installer les dépendances :
Créer un fichier .env.local
pour la configuration :
cp .env.example .env.local
Éditer le fichier .env.local
pour configurer la connexion à votre serveur gomcptest :
# Configuration big-AGI
# URL de votre serveur compatible OpenAI gomcptest
OPENAI_API_HOST=http://localhost:8080
# Il peut s'agir de n'importe quelle chaîne car le serveur gomcptest n'utilise pas de clés API
OPENAI_API_KEY=gomcptest-local-server
# Définissez cette valeur sur true pour activer le fournisseur personnalisé
OPENAI_API_ENABLE_CUSTOM_PROVIDER=true
Démarrer big-AGI :
Ouvrez votre navigateur et accédez à http://localhost:3000
pour accéder à l’interface big-AGI.
Configuration de big-AGI pour Utiliser Vos Modèles
Le serveur compatible OpenAI de gomcptest expose les modèles Google Cloud via une API compatible OpenAI. Dans big-AGI, vous devrez configurer les modèles :
- Ouvrez big-AGI dans votre navigateur
- Cliquez sur l’icône Paramètres (engrenage) en haut à droite
- Allez dans l’onglet Modèles
- Sous “Modèles OpenAI” :
- Cliquez sur “Ajouter des modèles”
- Ajoutez vos modèles par ID (par exemple,
gemini-1.5-pro
, gemini-2.0-flash
) - Définissez la longueur de contexte de manière appropriée (8K-32K selon le modèle)
- Définissez la capacité d’appel de fonction sur
true
pour les modèles qui la prennent en charge
Activation de l’Appel de Fonction avec des Outils
Pour utiliser les outils MCP via l’interface d’appel de fonction de big-AGI :
- Dans big-AGI, cliquez sur l’icône Paramètres
- Allez dans l’onglet Avancé
- Activez “Appel de fonction” dans la section “Fonctionnalités expérimentales”
- Dans une nouvelle conversation, cliquez sur l’onglet “Fonctions” (icône de plugin) dans l’interface de chat
- Les outils disponibles de votre serveur gomcptest devraient être listés
Configuration CORS pour big-AGI
Si vous exécutez big-AGI sur un domaine ou un port différent de celui de votre serveur gomcptest, vous devrez activer CORS côté serveur. Modifiez la configuration du serveur OpenAI :
Créez ou modifiez un middleware CORS pour le serveur OpenAI :
// Middleware CORS avec autorisation d'origine spécifique
func corsMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// Autoriser les requêtes provenant de l'origine big-AGI
w.Header().Set("Access-Control-Allow-Origin", "http://localhost:3000")
w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
if r.Method == "OPTIONS" {
w.WriteHeader(http.StatusOK)
return
}
next.ServeHTTP(w, r)
})
}
Appliquez ce middleware à vos routes de serveur
Résolution des Problèmes Courants
Modèle Non Trouvé
Si big-AGI signale que les modèles ne peuvent pas être trouvés :
- Vérifiez que votre serveur gomcptest est en cours d’exécution et accessible
- Vérifiez les journaux du serveur pour vous assurer que les modèles sont correctement enregistrés
- Assurez-vous que les ID de modèle dans big-AGI correspondent exactement à ceux fournis par votre serveur gomcptest
L’Appel de Fonction Ne Fonctionne Pas
Si les outils ne fonctionnent pas correctement :
- Assurez-vous que les outils sont correctement enregistrés dans votre serveur gomcptest
- Vérifiez que l’appel de fonction est activé dans les paramètres de big-AGI
- Vérifiez que le modèle que vous utilisez prend en charge l’appel de fonction
Problèmes de Connexion
Si big-AGI ne peut pas se connecter à votre serveur :
- Vérifiez la valeur
OPENAI_API_HOST
dans votre fichier .env.local
- Recherchez des problèmes CORS dans la console de développement de votre navigateur
- Assurez-vous que votre serveur est en cours d’exécution et accessible depuis le navigateur
Déploiement en Production
Pour une utilisation en production, considérez :
Sécurisation de votre API :
- Ajoutez une authentification appropriée à votre serveur OpenAI gomcptest
- Mettez à jour la
OPENAI_API_KEY
dans big-AGI en conséquence
Déploiement de big-AGI :
Mise en place de HTTPS :
- Pour la production, big-AGI et votre serveur gomcptest devraient utiliser HTTPS
- Envisagez d’utiliser un proxy inverse comme Nginx avec des certificats Let’s Encrypt
Exemple : Interface de Chat Basique
Une fois que tout est configuré, vous pouvez utiliser l’interface de big-AGI pour interagir avec vos modèles d’IA :
- Commencez une nouvelle conversation
- Sélectionnez votre modèle dans le menu déroulant des modèles (par exemple,
gemini-1.5-pro
) - Activez l’appel de fonction si vous souhaitez utiliser des outils
- Commencez à discuter avec votre assistant IA, propulsé par gomcptest
L’interface big-AGI offre une expérience beaucoup plus riche qu’une interface en ligne de commande, avec des fonctionnalités comme l’historique des conversations, le rendu markdown, la mise en évidence du code, et plus encore.