2025-06-17 20:40:48 +08:00

93 lines
2.5 KiB
Go

package main
import (
"log"
"os"
"strconv"
"gongzheng_minimax/handler"
"gongzheng_minimax/service"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
)
func main() {
// Load .env file
if err := godotenv.Load(); err != nil {
log.Printf("Warning: .env file not found: %v", err)
}
// Initialize LLM service
llmService := service.NewLLMService(service.Config{
LLMApiURL: os.Getenv("LLM_API_URL"),
LLMApiKey: os.Getenv("LLM_API_KEY"),
MiniMaxApiKey: os.Getenv("MiniMaxApiKey"),
MiniMaxApiURL: os.Getenv("MiniMaxApiURL"),
FILE_URL: os.Getenv("FILE_URL"),
})
// Get token configuration from environment variables
sigExp, err := strconv.Atoi(os.Getenv("SIG_EXP"))
if err != nil {
sigExp = 3600 // Default to 1 hour if not set
}
// Initialize token service
tokenService := service.NewTokenService(service.TokenConfig{
AppID: os.Getenv("APP_ID"),
AppKey: os.Getenv("APP_KEY"),
SigExp: sigExp,
})
// Initialize handlers
llmHandler := handler.NewLLMHandler(llmService)
tokenHandler := handler.NewTokenHandler(tokenService)
// Create Gin router
router := gin.Default()
// Add CORS middleware
router.Use(func(c *gin.Context) {
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")
c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT, DELETE")
if c.Request.Method == "OPTIONS" {
c.AbortWithStatus(204)
return
}
c.Next()
})
// Define routes
router.POST("/chat", llmHandler.Chat)
router.POST("/chat-messages/:task_id/stop", llmHandler.StopConversation)
router.DELETE("/conversations/:conversation_id", llmHandler.DeleteConversation)
router.POST("/speech/synthesize", llmHandler.SynthesizeSpeech)
router.GET("/stream-text", llmHandler.StreamText)
router.POST("/token", tokenHandler.GenerateToken)
// Serve static files
router.Static("/static", "./static")
// Get host and port from environment variables
host := os.Getenv("HOST")
if host == "" {
host = "0.0.0.0" // Default to all interfaces
}
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
// Start server
serverAddr := host + ":" + port
log.Printf("Server starting on %s", serverAddr)
if err := router.Run(serverAddr); err != nil {
log.Fatalf("Failed to start server: %v", err)
}
}