README
ยถ
ๆบ่ฝ็ฟป่ฏ็ณป็ป (Multi-Agent Translation System)
่ฟๆฏไธไธชไฝฟ็จๅคไธช AI Agent ๅไฝ็ๆบ่ฝ็ฟป่ฏ็ณป็ป๏ผ่ฝๅค่ชๅจๆฃๆต่พๅ ฅๆๆฌ็่ฏญ่จๅนถ็ฟป่ฏๆไธญๆใ
๐ฏ ็ณป็ปๆถๆ
่ฏฅ็ณป็ปไฝฟ็จไธคไธชไธ้จ็ Agent ๅไฝๅฎๆ็ฟป่ฏไปปๅก๏ผ
1. ๐ ่ฏญ่จๆฃๆต Agent (Language Detection Agent)
- ่่ดฃ: ่ฏๅซ่พๅ ฅๆๆฌไฝฟ็จ็่ฏญ่จ
- ่ฝๅ: ๆฏๆๅค็ง่ฏญ่จ่ฏๅซ๏ผ่ฑ่ฏญใๆณ่ฏญใๆฅ่ฏญใ่ฅฟ็ญ็่ฏญใๅพท่ฏญใไฟ่ฏญใไธญๆใ้ฉ่ฏญ็ญ๏ผ
- ่พๅบ: ่ฟๅๆฃๆตๅฐ็่ฏญ่จๅ็งฐ๏ผไธญๆ๏ผ
2. ๐ ็ฟป่ฏ Agent (Translation Agent)
- ่่ดฃ: ๅฐๆๆฌ็ฟป่ฏๆ็ฎไฝไธญๆ
- ่ฝๅ:
- ไฟๆๅๆ่ฏญๆฐๅ้ฃๆ ผ
- ๅ็กฎใ่ช็ถใๆต็ ็็ฟป่ฏ
- ไฟ็ไธๆๅ่ฏๅๆ ผๅผ
- ไผๅ: ๅฆๆๆฃๆตๅฐ่พๅ ฅๅทฒ็ปๆฏไธญๆ๏ผๅ่ทณ่ฟ็ฟป่ฏ
๐ ็นๆง
- ๅค Agent ๅไฝ: ไธคไธชไธ้จ็ Agent ๅๅทฅๅไฝ
- ่ชๅจ่ฏญ่จๆฃๆต: ๆ ้ๆๅจๆๅฎๆบ่ฏญ่จ
- ้ซ่ดจ้็ฟป่ฏ: ไฝฟ็จ DeepSeek Chat ๆจกๅ็กฎไฟ็ฟป่ฏ่ดจ้
- ๆบ่ฝไผๅ: ่ชๅจ่ทณ่ฟไธญๆๅฐไธญๆ็็ฟป่ฏ
- ๅค่ฏญ่จๆฏๆ: ๆฏๆ่ฑ่ฏญใๆณ่ฏญใๆฅ่ฏญใ่ฅฟ็ญ็่ฏญใๅพท่ฏญใไฟ่ฏญ็ญไธปๆต่ฏญ่จ
- Token ไฝฟ็จ่ฟฝ่ธช: ๅฎๆถๆพ็คบๆฏๆฌกๆไฝ็ token ๆถ่ๅๆๆฌ
- ๆๆฌไผฐ็ฎ: ๅบไบ DeepSeek ๅฎๆนๅฎไปท่ชๅจ่ฎก็ฎไฝฟ็จๆๆฌ
๐ฆ ไพ่ต
- Go 1.25.0+
- GoAgent ๆกๆถ
- DeepSeek API Key
๐ง ้ ็ฝฎ
่ทๅ DeepSeek API Key
- ่ฎฟ้ฎ DeepSeek ๅฎ็ฝ
- ๆณจๅ่ดฆๅทๅนถ่ทๅ API Key
- ่ฎพ็ฝฎ็ฏๅขๅ้๏ผ
export DEEPSEEK_API_KEY="your-api-key-here"
๐ฎ ไฝฟ็จๆนๆณ
่ฟ่กๆน้ๆต่ฏ็คบไพ
cd examples/translate
go run main.go
่ฟ่กไบคไบๅผ็คบไพ
cd examples/translate/interactive
go run main.go "Hello, world!"
# ๆ่
ไธๅธฆๅๆฐ๏ผ็จๅบไผๆ็คบ่พๅ
ฅ
go run main.go
ไปฃ็ ็คบไพ
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/kart-io/goagent/builder"
"github.com/kart-io/goagent/core/state"
"github.com/kart-io/goagent/llm"
"github.com/kart-io/goagent/llm/providers"
)
func main() {
// 1. ๅๅงๅ DeepSeek ๅฎขๆท็ซฏ
apiKey := os.Getenv("DEEPSEEK_API_KEY")
llmClient, err := providers.NewDeepSeek(&llm.Config{
APIKey: apiKey,
Model: "deepseek-chat",
Temperature: 0.3,
MaxTokens: 2000,
})
if err != nil {
log.Fatal(err)
}
// 2. ๅๅปบ็ฟป่ฏ็ณป็ป
translator := NewMultiAgentTranslator(llmClient)
// 3. ๆง่ก็ฟป่ฏ
ctx := context.Background()
result, err := translator.Translate(ctx, "Hello, world!")
if err != nil {
log.Fatal(err)
}
// 4. ๆฅ็็ปๆ
fmt.Printf("ๅๆ: %s\n", result.OriginalText)
fmt.Printf("ๆฃๆต่ฏญ่จ: %s\n", result.DetectedLanguage)
fmt.Printf("็ฟป่ฏ็ปๆ: %s\n", result.TranslatedText)
}
// ๅๅปบ Agent ๆถ้่ฆๆไพๅๅง็ถๆ
func createAgent(llmClient llm.Client, systemPrompt string) *builder.ConfigurableAgent[any, core.State] {
agent, err := builder.NewAgentBuilder[any, core.State](llmClient).
WithSystemPrompt(systemPrompt).
WithState(state.NewAgentState()). // ๅฟ
้กปๆไพๅๅง็ถๆ
Build()
if err != nil {
log.Fatal(err)
}
return agent
}
๐ ็ณป็ปๆต็จๅพ
ๆดไฝๆง่กๆต็จ
graph TD
Start([ๅผๅง]) --> Input[็จๆท่พๅ
ฅๆๆฌ]
Input --> Init[ๅๅงๅ็ฟป่ฏ็ณป็ป]
Init --> CreateAgents[ๅๅปบ Agent]
CreateAgents --> DetectionAgent[่ฏญ่จๆฃๆต Agent]
CreateAgents --> TranslationAgent[็ฟป่ฏ Agent]
DetectionAgent --> Execute[ๆง่ก็ฟป่ฏๆต็จ]
TranslationAgent --> Execute
Execute --> Step1[ๆญฅ้ชค1: ่ฏญ่จๆฃๆต]
Step1 --> LLM1[่ฐ็จ DeepSeek LLM]
LLM1 --> DetectResult[่ทๅ่ฏญ่จๅ็งฐ]
DetectResult --> Check{ๆฏๅฆไธบไธญๆ?}
Check -->|ๆฏ| SkipTranslate[่ทณ่ฟ็ฟป่ฏ]
Check -->|ๅฆ| Step2[ๆญฅ้ชค2: ๆง่ก็ฟป่ฏ]
Step2 --> LLM2[่ฐ็จ DeepSeek LLM]
LLM2 --> TransResult[่ทๅ็ฟป่ฏ็ปๆ]
SkipTranslate --> Output[่พๅบ็ปๆ]
TransResult --> Output
Output --> End([็ปๆ])
style Start fill:#90EE90
style End fill:#FFB6C1
style LLM1 fill:#87CEEB
style LLM2 fill:#87CEEB
style Check fill:#FFD700
่ฏฆ็ปๅทฅไฝๆต็จ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็จๆท่พๅ
ฅๆๆฌ โ
โ "Hello, how are you?" โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MultiAgentTranslator.Translate() โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๅๅงๅ TranslationResult โ โ
โ โ result.OriginalText = "Hello, how are you?" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆญฅ้ชค 1: ่ฏญ่จๆฃๆต (detectLanguage) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๐ ่ฏญ่จๆฃๆต Agent โ โ
โ โ โโ System Prompt: "ไฝ ๆฏ่ฏญ่จๆฃๆตไธๅฎถ..." โ โ
โ โ โโ Input: "Hello, how are you?" โ โ
โ โ โโ DeepSeek LLM ๅค็ โ โ
โ โ โโ Output: "่ฑ่ฏญ" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ result.DetectedLanguage = "่ฑ่ฏญ" โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโ
โ ๆฏไธญๆ? โ
โโโโโโฌโโโโโ
ๅฆ โ โ ๆฏ
โโโโโโโโโโโดโโ โโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ ๆญฅ้ชค 2: ็ฟป่ฏ (translateText)โ โ ่ทณ่ฟ็ฟป่ฏ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ result. โ
โ โ ๐ ็ฟป่ฏ Agent โโ โ TranslatedText โ
โ โ โโ System Prompt: โโ โ = ๅๆ โ
โ โ โ "ไฝ ๆฏ็ฟป่ฏไธๅฎถ..." โโ โโโโโโโโโโโโโโโโโโโโ
โ โ โโ Input: "่ฏทๅฐไปฅไธ โโ โ
โ โ โ ่ฑ่ฏญๆๆฌ็ฟป่ฏๆไธญๆ" โโ โ
โ โ โโ DeepSeek LLM ๅค็ โโ โ
โ โ โโ Output: โโ โ
โ โ "ไฝ ๅฅฝ๏ผไฝ ๅฅฝๅ๏ผ" โโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ result.TranslatedText = โ โ
โ "ไฝ ๅฅฝ๏ผไฝ ๅฅฝๅ๏ผ" โ โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ่ฟๅ TranslationResult โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ OriginalText: "Hello..." โ โ
โ โ DetectedLanguage: "่ฑ่ฏญ" โ โ
โ โ TranslatedText: โ โ
โ โ "ไฝ ๅฅฝ๏ผไฝ ๅฅฝๅ๏ผ" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ก ็คบไพ่พๅบ
========================================
=== ๆบ่ฝ็ฟป่ฏ็ณป็ป (Multi-Agent) ===
========================================
ไฝฟ็จ DeepSeek Chat ๆจกๅ
ใๆต่ฏ 1ใ
่พๅ
ฅ: Hello, how are you today?
------------------------------------------------------------
๐ ่ฏญ่จๆฃๆตไปฃ็: ๆญฃๅจ่ฏๅซ่ฏญ่จ...
โ ๆฃๆตๅฎๆ: ่ฑ่ฏญ (ไฝฟ็จ 245 tokens)
๐ ็ฟป่ฏไปฃ็: ๆญฃๅจ็ฟป่ฏๆๆฌ...
โ ็ฟป่ฏๅฎๆ (ไฝฟ็จ 312 tokens)
ๆฃๆต่ฏญ่จ: ่ฑ่ฏญ
็ฟป่ฏ็ปๆ: ไฝ ๅฅฝ๏ผไฝ ไปๅคฉๅฅฝๅ๏ผ
Token ไฝฟ็จๆ
ๅต:
- ่ฏญ่จๆฃๆต: 245 tokens
- ็ฟป่ฏ: 312 tokens
- ๆป่ฎก: 557 tokens
============================================================
ใๆต่ฏ 2ใ
่พๅ
ฅ: Bonjour, comment allez-vous?
------------------------------------------------------------
๐ ่ฏญ่จๆฃๆตไปฃ็: ๆญฃๅจ่ฏๅซ่ฏญ่จ...
โ ๆฃๆตๅฎๆ: ๆณ่ฏญ (ไฝฟ็จ 238 tokens)
๐ ็ฟป่ฏไปฃ็: ๆญฃๅจ็ฟป่ฏๆๆฌ...
โ ็ฟป่ฏๅฎๆ (ไฝฟ็จ 298 tokens)
ๆฃๆต่ฏญ่จ: ๆณ่ฏญ
็ฟป่ฏ็ปๆ: ไฝ ๅฅฝ๏ผๆจๅฅฝๅ๏ผ
Token ไฝฟ็จๆ
ๅต:
- ่ฏญ่จๆฃๆต: 238 tokens
- ็ฟป่ฏ: 298 tokens
- ๆป่ฎก: 536 tokens
============================================================
ใๆต่ฏ 3ใ
่พๅ
ฅ: ใใใซใกใฏใใๅ
ๆฐใงใใ๏ผ
------------------------------------------------------------
๐ ่ฏญ่จๆฃๆตไปฃ็: ๆญฃๅจ่ฏๅซ่ฏญ่จ...
โ ๆฃๆตๅฎๆ: ๆฅ่ฏญ (ไฝฟ็จ 252 tokens)
๐ ็ฟป่ฏไปฃ็: ๆญฃๅจ็ฟป่ฏๆๆฌ...
โ ็ฟป่ฏๅฎๆ (ไฝฟ็จ 305 tokens)
ๆฃๆต่ฏญ่จ: ๆฅ่ฏญ
็ฟป่ฏ็ปๆ: ไฝ ๅฅฝ๏ผๆจๅฅฝๅ๏ผ
Token ไฝฟ็จๆ
ๅต:
- ่ฏญ่จๆฃๆต: 252 tokens
- ็ฟป่ฏ: 305 tokens
- ๆป่ฎก: 557 tokens
============================================================
ใๆต่ฏ 4ใ
่พๅ
ฅ: ไฝ ๅฅฝ๏ผไปๅคฉๅคฉๆฐๆไนๆ ท๏ผ
------------------------------------------------------------
๐ ่ฏญ่จๆฃๆตไปฃ็: ๆญฃๅจ่ฏๅซ่ฏญ่จ...
โ ๆฃๆตๅฎๆ: ไธญๆ (ไฝฟ็จ 235 tokens)
๐ ็ฟป่ฏไปฃ็: ๆญฃๅจ็ฟป่ฏๆๆฌ...
โ ็ฟป่ฏๅฎๆ (ไฝฟ็จ 0 tokens)
ๆฃๆต่ฏญ่จ: ไธญๆ
็ฟป่ฏ็ปๆ: ไฝ ๅฅฝ๏ผไปๅคฉๅคฉๆฐๆไนๆ ท๏ผ
Token ไฝฟ็จๆ
ๅต:
- ่ฏญ่จๆฃๆต: 235 tokens
- ็ฟป่ฏ: 0 tokens
- ๆป่ฎก: 235 tokens
============================================================
โจ ็ฟป่ฏ็ณป็ปๆต่ฏๅฎๆ!
๐ ๆปไฝ็ป่ฎก:
- ๆป Token ไฝฟ็จ้: 3,850 tokens
- ๆปๆๆฌ: $0.000809
๐ Token ไฝฟ็จไธๆๆฌ
Token ่ฟฝ่ธชๆบๅถ
็ณป็ปไฝฟ็จ GoAgent ็ CostTrackingCallback ๅฎๆถ่ฟฝ่ธชๆฏๆฌก LLM ่ฐ็จ็ token ไฝฟ็จๆ
ๅต๏ผ
// ๅๅปบ token ่ฟฝ่ธชๅจ
pricing := map[string]float64{
"deepseek-chat": 0.21 / 1_000_000, // DeepSeek ๅนณๅไปทๆ ผ๏ผ$0.21/M tokens
}
tokenTracker := core.NewCostTrackingCallback(pricing)
// ๆทปๅ ๅฐ Agent ้
็ฝฎ
agent, err := builder.NewAgentBuilder[any, core.State](llmClient).
WithSystemPrompt(systemPrompt).
WithState(state.NewAgentState()).
WithCallbacks(tokenTracker). // ๆทปๅ token ่ฟฝ่ธชๅ่ฐ
Build()
DeepSeek ๅฎไปท
ๆ นๆฎ DeepSeek ๅฎๆนๅฎไปท๏ผๆช่ณ 2025-01๏ผ๏ผ
| ๆจกๅ | ่พๅ ฅไปทๆ ผ | ่พๅบไปทๆ ผ | ๅนณๅไปทๆ ผ |
|---|---|---|---|
| deepseek-chat | $0.14/M tokens | $0.28/M tokens | $0.21/M tokens |
ๆณจๆ: ๆฌ็คบไพไฝฟ็จๅนณๅไปทๆ ผ $0.21/M tokens ่ฟ่กไผฐ็ฎ๏ผๅฎ้ ๆๆฌๅฏ่ฝ็ฅๆไธๅใ
Token ไฝฟ็จๅๆ
ๅ ธๅ็ฟป่ฏไปปๅก็ token ๆถ่๏ผ
| ๆไฝ | Token ่ๅด | ่ฏดๆ |
|---|---|---|
| ่ฏญ่จๆฃๆต | 200-300 tokens | ๅ ๅซ System Prompt + ่พๅ ฅๆๆฌ |
| ๆๆฌ็ฟป่ฏ | 250-400 tokens | ๅ ๅซ System Prompt + ่พๅ ฅๆๆฌ + ่พๅบ |
| ่ทณ่ฟ็ฟป่ฏ๏ผไธญๆ๏ผ | 0 tokens | ๆบ่ฝไผๅ๏ผๆฃๆตๅฐไธญๆๅไธ่ฐ็จ็ฟป่ฏ LLM |
ๆๆฌไผๅๅปบ่ฎฎ
- ๆน้ๅค็: ไธๆฌกๅค็ๅคไธชๆๆฌๅฏไปฅๅๆ System Prompt ็ token ๆๆฌ
- ็ผๅญ็ปๆ: ๅฏนไบ้ๅค็ฟป่ฏ็ๆๆฌๅฏไปฅไฝฟ็จ็ผๅญ
- ่ฏญ่จ้ขๅค: ๅฆๆๅทฒ็ฅๆบ่ฏญ่จ๏ผๅฏไปฅ่ทณ่ฟ่ฏญ่จๆฃๆตๆญฅ้ชค
- ็ฎๅ Prompt: ๅจไฟ่ฏ่ดจ้็ๅๆไธ๏ผๅฏไปฅ้ๅฝ็ฎๅ System Prompt
TranslationResult ็ปๆ
type TranslationResult struct {
OriginalText string `json:"original_text"` // ๅๆ
DetectedLanguage string `json:"detected_language"` // ๆฃๆตๅฐ็่ฏญ่จ
TranslatedText string `json:"translated_text"` // ็ฟป่ฏ็ปๆ
TokensUsed int `json:"tokens_used"` // ๆป token ๆฐ
DetectionTokens int `json:"detection_tokens"` // ่ฏญ่จๆฃๆต token
TranslationTokens int `json:"translation_tokens"` // ็ฟป่ฏ token
}
๐๏ธ ็ณป็ป่ฎพ่ฎก
็ณป็ปๆถๆๅพ
graph TB
subgraph "็จๆทๅฑ"
User[็จๆท]
CLI[ๅฝไปค่ก็้ข]
end
subgraph "ๅบ็จๅฑ"
Main[main.go<br/>ๆน้ๆต่ฏ]
Interactive[interactive/main.go<br/>ไบคไบๅผ]
end
subgraph "ไธๅกๅฑ - MultiAgentTranslator"
Translator[็ฟป่ฏๅ่ฐๅจ]
DetectLang[detectLanguage<br/>่ฏญ่จๆฃๆตๆนๆณ]
TransText[translateText<br/>็ฟป่ฏๆนๆณ]
end
subgraph "Agent ๅฑ"
DetectionAgent[๐ ่ฏญ่จๆฃๆต Agent<br/>ConfigurableAgent]
TranslationAgent[๐ ็ฟป่ฏ Agent<br/>ConfigurableAgent]
end
subgraph "LLM ๅฑ"
DeepSeek[DeepSeek LLM Provider<br/>deepseek-chat]
end
subgraph "ๆกๆถๅฑ - GoAgent"
Builder[AgentBuilder<br/>ๆๅปบๅจ]
State[AgentState<br/>็ถๆ็ฎก็]
LLMClient[LLM Client<br/>ๆฅๅฃ]
end
User --> CLI
CLI --> Main
CLI --> Interactive
Main --> Translator
Interactive --> Translator
Translator --> DetectLang
Translator --> TransText
DetectLang --> DetectionAgent
TransText --> TranslationAgent
DetectionAgent --> Builder
TranslationAgent --> Builder
Builder --> State
Builder --> LLMClient
DetectionAgent --> DeepSeek
TranslationAgent --> DeepSeek
LLMClient --> DeepSeek
style User fill:#90EE90
style DeepSeek fill:#87CEEB
style Translator fill:#FFD700
style DetectionAgent fill:#FFA07A
style TranslationAgent fill:#FFA07A
ๅบๅๅพ - Agent ไบคไบๆต็จ
sequenceDiagram
participant U as ็จๆท
participant M as main.go
participant T as ็ฟป่ฏๅจ
participant DA as ่ฏญ่จๆฃๆตAgent
participant TA as ็ฟป่ฏAgent
participant LLM as DeepSeekๆจกๅ
U->>M: ่พๅ
ฅๆๆฌ "Hello, world!"
M->>T: ๅๅปบ็ฟป่ฏๅจๅฎไพ
Note right of T: ๅๅงๅ้ถๆฎต
T->>DA: createLanguageDetectionAgent()
T->>TA: createTranslationAgent()
M->>T: Translate(ctx, text)
Note over T,DA: ๆญฅ้ชค1: ่ฏญ่จๆฃๆต
T->>T: ๅๅงๅ TranslationResult
T->>DA: detectLanguage(ctx, "Hello, world!")
DA->>LLM: Execute() - ่ฏๅซ่ฏญ่จ
LLM-->>DA: "่ฑ่ฏญ"
DA-->>T: return "่ฑ่ฏญ"
T->>T: result.DetectedLanguage = "่ฑ่ฏญ"
Note over T: ๆญฅ้ชค2: ๆกไปถๅคๆญ
T->>T: if language != "ไธญๆ"
Note over T,TA: ๆญฅ้ชค3: ๆง่ก็ฟป่ฏ
T->>TA: translateText(ctx, text, "่ฑ่ฏญ")
TA->>TA: ๆๅปบๆ็คบ่ฏ
TA->>LLM: Execute() - ็ฟป่ฏๆๆฌ
LLM-->>TA: "ไฝ ๅฅฝ๏ผไธ็๏ผ"
TA-->>T: return "ไฝ ๅฅฝ๏ผไธ็๏ผ"
T->>T: result.TranslatedText = "ไฝ ๅฅฝ๏ผไธ็๏ผ"
T-->>M: return TranslationResult
M->>U: ๆพ็คบ็ฟป่ฏ็ปๆ
Note over U: ๅๆ: Hello, world!<br/>ๆฃๆต่ฏญ่จ: ่ฑ่ฏญ<br/>็ฟป่ฏ็ปๆ: ไฝ ๅฅฝ๏ผไธ็๏ผ
ๆฐๆฎๆตๅพ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆฐๆฎๆตๅ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
่พๅ
ฅๆๆฌ
โ
โ "Hello, world!"
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TranslationResult โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ OriginalText: "Hello, world!" โ โ
โ โ DetectedLanguage: "" โ โ
โ โ TranslatedText: "" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โ ไผ ้็ป่ฏญ่จๆฃๆต Agent
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ่ฏญ่จๆฃๆต Agent ่พๅ
ฅ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Input: "Hello, world!" โ โ
โ โ SystemPrompt: "ไฝ ๆฏ่ฏญ่จๆฃๆตไธๅฎถ"โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โ ่ฐ็จ DeepSeek LLM
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ LLM ๅค็ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Model: deepseek-chat โ โ
โ โ Temperature: 0.3 โ โ
โ โ MaxTokens: 2000 โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โ ่ฟๅๆฃๆต็ปๆ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ่ฏญ่จๆฃๆต Agent ่พๅบ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Output: "่ฑ่ฏญ" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โ ๆดๆฐ็ปๆ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TranslationResult (ๆดๆฐๅ) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ OriginalText: "Hello, world!" โ โ
โ โ DetectedLanguage: "่ฑ่ฏญ" โ โ
โ โ TranslatedText: "" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โ ไผ ้็ป็ฟป่ฏ Agent
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็ฟป่ฏ Agent ่พๅ
ฅ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Input: "่ฏทๅฐไปฅไธ่ฑ่ฏญๆๆฌ็ฟป่ฏๆ โ โ
โ โ ไธญๆ๏ผHello, world!" โ โ
โ โ SystemPrompt: "ไฝ ๆฏ็ฟป่ฏไธๅฎถ" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โ ่ฐ็จ DeepSeek LLM
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ LLM ๅค็ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Model: deepseek-chat โ โ
โ โ Temperature: 0.3 โ โ
โ โ MaxTokens: 2000 โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โ ่ฟๅ็ฟป่ฏ็ปๆ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็ฟป่ฏ Agent ่พๅบ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Output: "ไฝ ๅฅฝ๏ผไธ็๏ผ" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โ ๆดๆฐ็ปๆ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TranslationResult (ๆ็ป) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ OriginalText: "Hello, world!" โ โ
โ โ DetectedLanguage: "่ฑ่ฏญ" โ โ
โ โ TranslatedText: "ไฝ ๅฅฝ๏ผไธ็๏ผ" โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โ ่ฟๅ็ป็จๆท
โ
โผ
่พๅบ็ปๆ
MultiAgentTranslator ็ปๆ
type MultiAgentTranslator struct {
llmClient llm.Client
detectionAgent *builder.ConfigurableAgent[any, core.State]
translationAgent *builder.ConfigurableAgent[any, core.State]
}
ๆ ธๅฟๆนๆณ
-
Translate(ctx, text) - ไธป็ฟป่ฏๆต็จ
- ่ฐ็จ่ฏญ่จๆฃๆต Agent
- ่ฐ็จ็ฟป่ฏ Agent
- ่ฟๅๅฎๆด็ปๆ
-
detectLanguage(ctx, text) - ่ฏญ่จๆฃๆต
- ไฝฟ็จไธ้จ็ๆฃๆต Agent
- ่ฟๅ่ฏญ่จๅ็งฐ๏ผไธญๆ๏ผ
-
translateText(ctx, text, language) - ๆๆฌ็ฟป่ฏ
- ไฝฟ็จไธ้จ็็ฟป่ฏ Agent
- ๆบ่ฝ่ทณ่ฟไธญๆๅฐไธญๆ็็ฟป่ฏ
๐ฏ ๆฏๆ็่ฏญ่จ
- โ ่ฑ่ฏญ (English)
- โ ๆณ่ฏญ (French)
- โ ๆฅ่ฏญ (Japanese)
- โ ่ฅฟ็ญ็่ฏญ (Spanish)
- โ ๅพท่ฏญ (German)
- โ ไฟ่ฏญ (Russian)
- โ ไธญๆ (Chinese)
- โ ้ฉ่ฏญ (Korean)
- โ ๅ ถไป่ฏญ่จ๏ผ่ชๅจ่ฏๅซ๏ผ
โ๏ธ ้ ็ฝฎ้้กน
DeepSeek ้ ็ฝฎ
&llm.Config{
APIKey: "your-api-key",
Model: "deepseek-chat", // DeepSeek ๅฏน่ฏๆจกๅ
Temperature: 0.3, // ไฝๆธฉๅบฆ่ทๅพๆดๅ็กฎ็็ฟป่ฏ
MaxTokens: 2000, // ๆๅคง token ๆฐ
}
Agent ้ ็ฝฎ
ๅฏไปฅ้่ฟ builder.NewAgentBuilder ่ชๅฎไน Agent ้
็ฝฎ๏ผ
- System Prompt๏ผ็ณป็ปๆ็คบ๏ผ
- Temperature๏ผๆธฉๅบฆ๏ผ
- Max Tokens๏ผๆๅคง token ๆฐ๏ผ
- ๅ ถไปๅๆฐ
๐ ๆถๆ็ฌฆๅๆง
่ฏฅๅฎ็ฐ้ตๅพช GoAgent ็ 4 ๅฑๆถๆ๏ผ
- โ
Layer 4 (Examples): ไฝไบ
examples/translate/ - โ ๅฏผๅ ฅ่งๅ: ๅชไป Layer 1 (interfaces) ๅ Layer 2 (core, builder, llm) ๅฏผๅ ฅ
- โ ๆ ๅพช็ฏไพ่ต: ๆฒกๆๅไธๅฏผๅ ฅๆๅพช็ฏไพ่ต
- โ ไปฃ็ ่ดจ้: ้ตๅพช Go ไปฃ็ ่ง่ๅๆไฝณๅฎ่ทต
๐ ๏ธ ๆฉๅฑๅปบ่ฎฎ
ๆทปๅ ๆดๅค่ฏญ่จๆฏๆ
ๅจ createLanguageDetectionAgent ็ system prompt ไธญๆทปๅ ๆฐ่ฏญ่จ่งๅใ
ๆฏๆๅ ถไป็ฎๆ ่ฏญ่จ
ไฟฎๆน createTranslationAgent ็ system prompt๏ผๆฏๆ็ฟป่ฏๆๅ
ถไป็ฎๆ ่ฏญ่จใ
ๆทปๅ ็ผๅญ
ไฝฟ็จ GoAgent ็ไธญ้ดไปถ็ณป็ปๆทปๅ ็ฟป่ฏ็ปๆ็ผๅญ๏ผๆ้ซๆง่ฝใ
ๆน้็ฟป่ฏ
ๆฉๅฑ MultiAgentTranslator ๆฏๆๆน้็ฟป่ฏๅคไธชๆๆฌใ
๐ ่ฎธๅฏ่ฏ
้ตๅพช GoAgent ้กน็ฎ็่ฎธๅฏ่ฏใ
๐ค ่ดก็ฎ
ๆฌข่ฟๆไบค Issue ๅ Pull Request๏ผ
ๆๅๆดๆฐ: 2025-11-15 ไฝ่ : GoAgent Team
Documentation
ยถ
There is no documentation for this package.