Files
langchain-go/backend/main.go
T
2026-03-24 22:15:30 +08:00

105 lines
2.0 KiB
Go

package main
// this is 注释
import (
handle "agent/handlers"
"agent/middlewares"
"context"
"fmt"
"log"
"os"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
"github.com/tmc/langchaingo/llms"
"github.com/tmc/langchaingo/llms/openai"
)
var (
apiKey string
baseUrl string
model = "Pro/zai-org/GLM-4.7"
ctx context.Context
llm llms.Model
)
func init() {
err := godotenv.Load()
if err != nil {
fmt.Println(".env 文件加载失败")
}
apiKey = os.Getenv("API_KEY")
baseUrl = os.Getenv("BASE_URL")
fmt.Printf("API Key: %s\n", apiKey)
fmt.Printf("Base URL: %s\n", baseUrl)
llm, err = openai.New(
openai.WithBaseURL(baseUrl),
openai.WithToken(apiKey),
openai.WithModel(model),
)
if err != nil {
log.Fatal(err)
}
ctx = context.Background()
}
func main() {
route := gin.Default()
route.Use(middlewares.Cors())
route.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
route.GET("/agent/card/:topic", func(c *gin.Context) {
topic := c.Param("topic")
message := handle.GetCard(llm, ctx, topic)
c.JSON(200, gin.H{
"message": message,
})
})
route.GET("/agent/guodegang/:topic", func(c *gin.Context) {
topic := c.Param("topic")
message := handle.GetGuodegang(llm, ctx, topic)
c.JSON(200, gin.H{
"message": message,
})
})
route.GET("/agent/mermaid/:topic", func(c *gin.Context) {
topic := c.Param("topic")
message := handle.GetMermaid(llm, ctx, topic)
c.JSON(200, gin.H{
"message": message,
})
})
route.GET("/agent/quiz/:topic", func(c *gin.Context) {
topic := c.Param("topic")
message := handle.GetQuiz(llm, ctx, topic)
c.JSON(200, gin.H{
"message": message,
})
})
route.GET("/agent/scenario/:topic", func(c *gin.Context) {
topic := c.Param("topic")
message := handle.GetScenario(llm, ctx, topic)
c.JSON(200, gin.H{
"message": message,
})
})
route.GET("/agent/all/:topic", func(c *gin.Context) {
topic := c.Param("topic")
message := handle.GetAll(llm, ctx, topic)
c.JSON(200, gin.H{
"message": message,
})
})
route.Run()
}