AI Personal Learning
und praktische Anleitung
Ali - bemalter Frosch

Eino: ByteDance's Open Source Golang Big Model Application Development Framework

Allgemeine Einführung

Eino ist ein Golang-basiertes Open-Source-Framework, das vom CloudWeGo-Team ins Leben gerufen wurde, um das ultimative Entwicklungswerkzeug für Large Model (LLM)-Anwendungen zu sein. Es stützt sich auf das hervorragende Design von Open-Source-Frameworks wie LangChain und LlamaIndex und kombiniert modernste Forschungsergebnisse und die interne praktische Erfahrung von ByteDance, um eine einfache, skalierbare und effiziente Entwicklungserfahrung zu bieten.Eino hilft Entwicklern, schnell zuverlässige KI-Anwendungen durch gut durchdachte Komponentenabstraktionen, leistungsstarke Orchestrierungsfunktionen, vollständige Streaming-Unterstützung und Typsicherheitsfunktionen zu erstellen. Eino Eino ist bei ByteDance weit verbreitet (z.B. Jitter, Doubao) und wird nun auf GitHub als Open Source zur Verfügung gestellt. Es verfügt über eine hohe Codeabdeckung und eine aktive Community, die sich für die Standardisierung und Effizienz der KI-Entwicklung im Golang-Ökosystem einsetzt.

blank


 

Funktionsliste

  • Reichhaltige KomponentenabstraktionBietet wiederverwendbare Komponenten wie ChatModel, Tool, ChatTemplate usw., die Verschachtelung und komplexe Logikkapselung unterstützen.
  • Kraftvolle ChoreografieUnterstützt sowohl den Ketten- als auch den Graphenmodus und bietet Typüberprüfung, Gleichzeitigkeitsmanagement und Datenflussorchestrierung.
  • Vollständige Streaming-VerarbeitungAutomatisches Splicing, Splitting, Merging und Kopieren von Streaming-Daten, Anpassung an verschiedene Streaming-Paradigmen.
  • Hochgradig skalierbare AusschnitteEingebauter Callback-Mechanismus zur Unterstützung der Injektion von übergreifenden Belangen wie Protokollierung und Verfolgung.
  • TypensicherheitGolang-Compile-Time-Checks verwenden, um sicherzustellen, dass Eingaben und Ausgaben übereinstimmen.
  • Entwicklungs-ToolsetBietet visuelles Debugging, Evaluatoren usw., die den gesamten Entwicklungszyklus abdecken.
  • Beispiele für bewährte Verfahren: Eingebaut ReAct Implementierung von Agenten und anderen Prozessen, mit umfangreichem Beispielcode.

 

Hilfe verwenden

Ablauf der Installation

Eino ist ein Golang-Framework und benötigt zur Installation eine Go-Umgebung. Hier sind die detaillierten Schritte:

  1. Installieren gehen
    • Besuchen Sie die Go-Website, um Version 1.18 oder höher herunterzuladen.
    • Nachdem die Installation abgeschlossen ist, führen Sie Go-Version Überprüfen Sie die Version (z.B. go1.21.0).
  2. Eino-Kernbibliotheken abrufen
    • Läuft im Terminal:
      go get github.com/cloudwego/eino@latest
      
    • Wenn Sie die Komponente erweitern müssen (z. B. OpenAI-Unterstützung), führen Sie aus:
      go get github.com/cloudwego/eino-ext@latest
      
  3. Überprüfen der Installation
    • Dokumente erstellen main.go::
      Paket main
      importieren "github.com/cloudwego/eino"
      func main() {
      println("Eino erfolgreich installiert!")
      }
      
    • vollziehen go main.go ausführenWenn die Ausgabe erfolgreich ist, ist der Vorgang abgeschlossen.
  4. Abhängigkeitserklärung
    • Eino-Abhängigkeiten kin-openapi Version v0.118.0 für Go 1.18 Kompatibilität.
    • Optional:EinoExt Bereitstellung von mehr Komponentenimplementierungen.
  5. Unterstützung der Gemeinschaft
    • Besuchen Sie GitHub Issues, um ein Issue einzureichen oder der Flying Book User Group beizutreten (siehe QR-Code auf der offiziellen Seite).

Hauptfunktionen

1. direkt ChatModel verwenden

ChatModel ist die Basiskomponente, die verwendet wird, um das große Modell aufzurufen und Inhalte zu generieren.

  • Code-Beispiel
    Paket main
    importieren (
    "kontext"
    "github.com/cloudwego/eino-ext/components/model/openai"
    "github.com/cloudwego/eino/schema"
    )
    func main() {
    ctx := kontext.Hintergrund()
    config := &openai.Config{APIKey: "Ihr OpenAI-API-Schlüssel"}
    model, err := openai.NewChatModel(ctx, config)
    if err ! = nil {
    panic(err)
    }
    messages := []*schema.Message{
    {Rolle: schema.System, Inhalt: "Sie sind ein Assistent."} ,
    {Rolle: schema.User, Inhalt: "Wie werden KI-Apps in Zukunft aussehen?"} ,
    }
    msg, err := model.Generate(ctx, messages)
    if err ! = nil {
    panic(err)
    }
    println(msg.Inhalt)
    }
  • Betriebsanleitung
    • Kosten oder Aufwand NewChatModel Initialisieren Sie die Modellinstanz und übergeben Sie den Kontext und die API-Konfiguration.
    • Aufforderungen Erzeugen Sie Methode erzeugt eine Nicht-Streaming-Ausgabe.
    • Andere Modelle (z.B. LLaMA) können durch Erweiterungskomponenten unterstützt werden.

2. einfache Prozesse mit Chain orchestrieren

Chain eignet sich für lineare Prozesse wie Vorlagen + Modelle.

  • Code-Beispiel
    Paket main
    importieren (
    "kontext"
    "github.com/cloudwego/eino"
    "github.com/cloudwego/eino-ext/components/model/openai"
    )
    func main() {
    ctx := kontext.Hintergrund()
    model, _ := openai.NewChatModel(ctx, &openai.Config{APIKey: "Ihr API-Schlüssel"})
    prompt := eino.NewChatTemplate("Hallo, mein Name ist {{.Name}}")
    chain, _ := eino.NewChain[map[string]any, *eino.Message]().
    AppendChatTemplate(prompt).
    AppendChatModel(model).
    Kompilieren(ctx)
    result, _ := chain.Invoke(ctx, map[string]any{"name": "Eino"})
    println(result.Content)
    }
    
  • Betriebsanleitung
    • NewChain Definieren Sie die Eingabe- und Ausgabetypen, dieAnhängen Knoten hinzufügen.
    • Kompilieren Die Kompilierungskette.Rufen Sie auf. Ausführen und das Ergebnis zurückgeben.
    • Gut geeignet für einfache sequenzielle Aufgaben, die hin und her gehen.

3. die Verwendung von Graph für komplexe Planungen

Graph unterstützt zyklische oder azyklische gerichtete Graphen, die sich für Szenarien wie Werkzeugaufrufe eignen.

  • Code-Beispiel
    Paket main
    importieren (
    "kontext"
    "github.com/cloudwego/eino"
    "github.com/cloudwego/eino-ext/components/model/openai"
    "github.com/cloudwego/eino/schema"
    )
    func main() {
    ctx := kontext.Hintergrund()
    model, _ := openai.NewChatModel(ctx, &openai.Config{APIKey: "Ihr API-Schlüssel"})
    graph := eino.NewGraph[map[string]any, *schema.Message]()
    graph.AddChatModelNode("model", model)
    graph.AddEdge(eino.START, "model")
    graph.AddEdge("model", eino.END)
    runnable, _ := graph.Compile(ctx)
    result, _ := runnable.Invoke(ctx, map[string]any{"query": "Hallo, Welt!"})
    println(result.Content)
    }
    
  • Betriebsanleitung
    • Hinzufügen*Knoten Hinzufügen von Knoten.AddEdge Definieren Sie die Datenflussrichtung.
    • Unterstützung für Verzweigungen (AddBranch) und Werkzeugaufrufe.
    • Strom (von Wasser usw.) austauschbar Rufen Sie auf. Streaming-Ausgabe abrufen.

4. das Streaming konfigurieren

Eino bietet vier Streaming-Paradigmen: Invoke, Stream, Collect und Transform.

  • Beispiel für eine Streaming-Ausgabe
    stream, _ := runnable.Stream(ctx, map[string]any{"query": "Hallo, Welt!"})
    for chunk := range stream {
    if chunk.Err ! = nil {
    panic(chunk.Err)
    }
    print(chunk.Value.Content)
    }
    
  • Funktionelle Analyse
    • Eino übernimmt automatisch das Splicing (z.B. zu Nicht-Stream-Knoten) und das Splitting (z.B. Kopieren bei Verzweigungen) von Streams.
    • Die nachgelagerten Knoten müssen sich nicht um den Status der vorgelagerten Ströme kümmern, da der Rahmen dies transparent handhabt.

5) Hinzufügen eines Rückrufmechanismus

Rückrufe werden für die Protokollierung, Nachverfolgung und andere Erweiterungen verwendet.

  • Code-Beispiel
    handler := eino.NewHandlerBuilder().
    OnStartFn(func(ctx context.Context, info *eino.RunInfo, input eino.CallbackInput) context.Context {
    println("Start:", info.NodeID)
    return ctx
    }).Build()
    result, _ := runnable.Invoke(ctx, map[string]any{"query": "test"}, eino.WithCallbacks(handler))
    
  • Betriebspunkte
    • Adjuvans OnStart, undOnEnd Fünf Arten von Schnitten wie.
    • passabel WithCallbacks Geben Sie den Knoten oder den globalen Effekt an.

Featured Function Bedienung

1) ReAct Agent

  • Funktionelle Beschreibung
    Der ReAct Agent kombiniert ChatModel und Tool-Aufrufe, um autonome Entscheidungsschleifen zu ermöglichen.
  • Verfahren
    • Beratung react.go.
    • Führen Sie das Beispiel aus: Konfigurieren Sie das Modell und die Werkzeuge, rufen Sie die Rufen Sie auf. Umsetzung.

2. visuelles Debugging

  • Funktionelle Beschreibung
    passieren (eine Rechnung oder Inspektion etc.) Eino Devops Bietet UI-Debugging.
  • Verfahren
    • ziehen eino-ext Lagerhaus, Lauf devops sehen Sie sich die Dokumentenkonfiguration an.
CDN1
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " Eino: ByteDance's Open Source Golang Big Model Application Development Framework

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)