 ebd2f6fabb
			
		
	
	
		ebd2f6fabb
		
	
	
	
		
			
	
		
	
	
		
			All checks were successful
		
		
	
	Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 53s
				
			
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"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"),
 | |
| 		LLMOurApiUrl:  os.Getenv("LLMOurApiUrl"),
 | |
| 		LLMOurApiKey:  os.Getenv("LLMOurApiKey"),
 | |
| 	})
 | |
| 
 | |
| 	fmt.Println("config: ", llmService)
 | |
| 
 | |
| 	// 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)
 | |
| 	}
 | |
| }
 |