Eino : Cadre de développement d'applications Big Model Golang Open Source de ByteDance
Introduction générale
Eino est un framework open source basé sur Golang lancé par l'équipe de CloudWeGo, visant à être l'outil de développement ultime pour les applications LLM (Large Model). Il s'inspire de l'excellente conception de frameworks open source tels que LangChain et LlamaIndex, et combine des résultats de recherche de pointe et l'expérience pratique interne de ByteDance pour fournir une expérience de développement simple, évolutive et efficace.Eino aide les développeurs à construire rapidement des applications d'IA fiables grâce à des abstractions de composants bien conçues, des capacités d'orchestration puissantes, un support complet du streaming, et des fonctionnalités de sécurité de type. Eino Eino a été largement utilisé au sein de ByteDance (par exemple Jitter, Doubao), et est maintenant ouvert sur GitHub, avec une couverture de code élevée et une communauté active dédiée à la promotion de la standardisation et de l'efficacité du développement de l'IA dans l'écosystème Golang.

Liste des fonctions
- Une abstraction riche en composantsIl fournit des composants réutilisables tels que ChatModel, Tool, ChatTemplate, etc., prenant en charge l'imbrication et l'encapsulation de logiques complexes.
- Une chorégraphie puissanteLe système de gestion des flux de données : il prend en charge les modes chaîne et graphe, et gère la vérification des types, la gestion de la concurrence et l'orchestration des flux de données.
- Traitement complet de la diffusion en continuLes données en flux continu sont gérées de manière automatique, en s'adaptant à de multiples paradigmes de flux continu.
- Des découpes hautement modulablesLes systèmes de gestion de l'information : Mécanisme de rappel intégré permettant d'injecter des informations transversales telles que la journalisation et la traçabilité.
- type de sécuritéLes contrôles de compilation de Golang permettent de s'assurer que les entrées et les sorties correspondent bien.
- Boîte à outils de développementLe système de débogage visuel, les évaluateurs, etc., couvrent l'ensemble du cycle de développement.
- Exemples de bonnes pratiques: Intégré ReAct Mise en œuvre d'agents et d'autres processus, avec de nombreux exemples de code.
Utiliser l'aide
Processus d'installation
Eino est un framework Golang et nécessite un environnement Go pour son installation. Voici les étapes détaillées :
- Installer Go
- Visitez le site web de Go pour télécharger la version 1.18 ou supérieure.
- Une fois l'installation terminée, exécutez
go version
Vérifiez la version (par exemplego1.21.0
).
- Extraction des bibliothèques de base Eino
- S'exécute dans le terminal :
go get github.com/cloudwego/eino@latest
- Si vous avez besoin d'étendre le composant (par exemple, le support OpenAI), exécutez :
go get github.com/cloudwego/eino-ext@latest
- S'exécute dans le terminal :
- Vérifier l'installation
- Création de documents
main.go
: :package main import "github.com/cloudwego/eino" func main() { println("Eino installed successfully!") }
- réaliser
go run main.go
Si la sortie est réussie, le processus est terminé.
- Création de documents
- déclaration de dépendance
- Dépendances Eino kin-openapi version v0.118.0 pour la compatibilité avec Go 1.18.
- En option :EinoExt Fournir davantage d'implémentations de composants.
- Soutien communautaire
- Visitez GitHub Issues pour soumettre un problème ou rejoignez le groupe d'utilisateurs Flying Book (voir le code QR sur la page officielle).
Principales fonctions
1. utiliser directement ChatModel
ChatModel est le composant de base, qui est utilisé pour appeler le grand modèle afin de générer du contenu.
- exemple de code
package main import ( "context" "github.com/cloudwego/eino-ext/components/model/openai" "github.com/cloudwego/eino/schema" ) func main() { ctx := context.Background() config := &openai.Config{APIKey: "你的OpenAI-API-Key"} model, err := openai.NewChatModel(ctx, config) if err != nil { panic(err) } messages := []*schema.Message{ {Role: schema.System, Content: "你是一个助手。"}, {Role: schema.User, Content: "未来AI应用是什么样?"}, } msg, err := model.Generate(ctx, messages) if err != nil { panic(err) } println(msg.Content) }
- Mode d'emploi
- dépense ou frais
NewChatModel
Initialise l'instance du modèle en lui transmettant le contexte et la configuration de l'API. - invocations
Generate
génère une sortie sans flux. - D'autres modèles (par exemple LLaMA) peuvent être pris en charge par des composants d'extension.
- dépense ou frais
2) Orchestrer des processus simples avec Chain
La chaîne convient aux processus linéaires tels que les modèles.
- exemple de code
package main import ( "context" "github.com/cloudwego/eino" "github.com/cloudwego/eino-ext/components/model/openai" ) func main() { ctx := context.Background() model, _ := openai.NewChatModel(ctx, &openai.Config{APIKey: "你的API-Key"}) prompt := eino.NewChatTemplate("你好,我的名字是{{.name}}") chain, _ := eino.NewChain[map[string]any, *eino.Message](). AppendChatTemplate(prompt). AppendChatModel(model). Compile(ctx) result, _ := chain.Invoke(ctx, map[string]any{"name": "Eino"}) println(result.Content) }
- Mode d'emploi
NewChain
Définir les types d'entrée et de sortie quiAppend
Ajouter un nœud.Compile
La chaîne de compilation.Invoke
Exécuter et renvoyer le résultat.- Idéal pour les tâches séquentielles simples en va-et-vient.
3. l'utilisation du graphique pour l'ordonnancement complexe
Graph prend en charge les graphes dirigés cycliques ou acycliques, ce qui convient à des scénarios tels que les appels d'outils.
- exemple de code
package main import ( "context" "github.com/cloudwego/eino" "github.com/cloudwego/eino-ext/components/model/openai" "github.com/cloudwego/eino/schema" ) func main() { ctx := context.Background() model, _ := openai.NewChatModel(ctx, &openai.Config{APIKey: "你的API-Key"}) 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": "你好,世界!"}) println(result.Content) }
- Mode d'emploi
Add*Node
Ajout de nœuds.AddEdge
Définir la direction du flux de données.- Prise en charge de la ramification (
AddBranch
) et les appels d'outils. Stream
interchangeableInvoke
Obtenir une sortie en continu.
4. configuration de la diffusion en continu
Eino propose quatre paradigmes de diffusion en continu : Invoke, Stream, Collect et Transform.
- Exemple de sortie en continu
stream, _ := runnable.Stream(ctx, map[string]any{"query": "你好,世界!"}) for chunk := range stream { if chunk.Err != nil { panic(chunk.Err) } print(chunk.Value.Content) }
- Analyse fonctionnelle
- Eino gère automatiquement l'épissage (par exemple, vers des nœuds qui ne sont pas des flux) et le fractionnement (par exemple, la copie lors d'une ramification) des flux.
- Les nœuds en aval n'ont pas besoin de se préoccuper de l'état du flux en amont et le cadre le gère de manière transparente.
5. ajouter un mécanisme de rappel
Les rappels sont utilisés pour la journalisation, le traçage et d'autres extensions.
- exemple de code
handler := eino.NewHandlerBuilder(). OnStartFn(func(ctx context.Context, info *eino.RunInfo, input eino.CallbackInput) context.Context { println("开始:", info.NodeID) return ctx }).Build() result, _ := runnable.Invoke(ctx, map[string]any{"query": "测试"}, eino.WithCallbacks(handler))
- Points de fonctionnement
- adjuvant
OnStart
,OnEnd
Cinq types de coupes telles que - passable
WithCallbacks
Spécifier le nœud ou l'effet global.
- adjuvant
Fonction en vedette Fonctionnement
1. l'agent ReAct
- Description fonctionnelle
L'agent ReAct combine le ChatModel et les appels d'outils pour permettre des boucles de décision autonomes. - procédure
- consultation react.go.
- Exécuter l'exemple : configurer le modèle et les outils, appeler la fonction
Invoke
Mise en œuvre.
2. débogage visuel
- Description fonctionnelle
faire passer (un projet de loi, une inspection, etc.) Eino Devops Permet le débogage de l'interface utilisateur. - procédure
- tirer
eino-ext
Entrepôt, coursedevops
visualiser la configuration du document.
- tirer
© déclaration de droits d'auteur
Article copyright Cercle de partage de l'IA Tous, prière de ne pas reproduire sans autorisation.
Articles connexes
Pas de commentaires...