Eino: marco de desarrollo de aplicaciones Big Model Golang de código abierto de ByteDance
Últimos recursos sobre IAPublicado hace 5 meses Círculo de intercambio de inteligencia artificial 2.8K 00
Introducción general
Eino es un framework de código abierto basado en Golang lanzado por el equipo de CloudWeGo, con el objetivo de ser la herramienta de desarrollo definitiva para aplicaciones de Grandes Modelos (LLM). Se basa en el excelente diseño de marcos de código abierto como LangChain y LlamaIndex, y combina los resultados de la investigación de vanguardia y la experiencia práctica interna de ByteDance para proporcionar una experiencia de desarrollo sencilla, escalable y eficiente.Eino ayuda a los desarrolladores a construir rápidamente aplicaciones de IA fiables a través de abstracciones de componentes bien diseñados, potentes capacidades de orquestación, soporte de streaming completo y características de seguridad de tipo. Eino Eino ha sido ampliamente utilizado dentro de ByteDance (por ejemplo, Jitter, Doubao), y ahora es de código abierto en GitHub, con una alta cobertura de código y una comunidad activa dedicada a promover la normalización y la eficiencia del desarrollo de IA en el ecosistema Golang.

Lista de funciones
- Abstracción de componentes enriquecidaProporciona componentes reutilizables como ChatModel, Tool, ChatTemplate, etc., que permiten el anidamiento y la encapsulación de lógica compleja.
- Coreografía potente: Soporta los modos Cadena y Gráfico, manejando la comprobación de tipos, la gestión de concurrencia y la orquestación del flujo de datos.
- Procesamiento completo de secuencias: Gestiona automáticamente el empalme, la división, la fusión y la copia de datos de streaming, adaptándose a múltiples paradigmas de streaming.
- Recortes altamente escalablesMecanismo de devolución de llamada incorporado para soportar la inyección de preocupaciones transversales como el registro y el rastreo.
- seguridad de tipoUtiliza las comprobaciones en tiempo de compilación de Golang para asegurarte de que las entradas y salidas coinciden.
- Herramientas de desarrollo: Proporciona depuración visual, evaluadores, etc., cubriendo todo el ciclo de desarrollo.
- Ejemplos de buenas prácticas: Integrado ReAct Implementación de agentes y otros procesos, con abundante código de ejemplo.
Utilizar la ayuda
Proceso de instalación
Eino es un framework Golang y requiere un entorno Go para su instalación. Aquí están los pasos detallados:
- Instalar Go
- Visita el sitio web de Go para descargar la versión 1.18 o superior.
- Una vez finalizada la instalación, ejecute
go version
Compruebe la versión (por ejemplogo1.21.0
).
- Extracción de bibliotecas básicas de Eino
- Se ejecuta en el terminal:
go get github.com/cloudwego/eino@latest
- Si necesita ampliar el componente (por ejemplo, compatibilidad con OpenAI), ejecútelo:
go get github.com/cloudwego/eino-ext@latest
- Se ejecuta en el terminal:
- Verificar la instalación
- Creación de documentos
main.go
::package main import "github.com/cloudwego/eino" func main() { println("Eino installed successfully!") }
- llevar a cabo
go run main.go
Si la salida es correcta, el proceso se ha completado.
- Creación de documentos
- declaración de dependencia
- Eino Dependencias kin-openapi versión v0.118.0 para compatibilidad con Go 1.18.
- Opcional:EinoExt Proporcionar más implementaciones de componentes.
- Apoyo comunitario
- Visita GitHub Issues para enviar una incidencia o únete al grupo de usuarios de Flying Book (consulta el código QR en la página oficial).
Funciones principales
1. Utilizar directamente ChatModel
ChatModel es el componente base, que se utiliza para llamar al modelo grande para generar contenido.
- ejemplo de código
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) }
- Instrucciones de uso
- gasto o desembolso
NewChatModel
Inicializa la instancia del modelo, pasando el contexto y la configuración de la API. - invocaciones
Generate
genera una salida sin flujo. - Otros modelos (por ejemplo, LLaMA) pueden admitirse mediante componentes de ampliación.
- gasto o desembolso
2. Orquestar procesos sencillos con Chain
La cadena es adecuada para procesos lineales como plantillas + modelos.
- ejemplo de código
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) }
- Instrucciones de uso
NewChain
Definir los tipos de entrada y salida queAppend
Añadir nodo.Compile
La cadena de compilación.Invoke
Ejecutar y devolver el resultado.- Bueno para tareas secuenciales sencillas de ida y vuelta.
3. Uso de Graph para una programación compleja
Graph admite grafos dirigidos cíclicos o acíclicos, adecuados para escenarios como las llamadas a herramientas.
- ejemplo de código
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) }
- Instrucciones de uso
Add*Node
Añadir nodos.AddEdge
Definir la dirección del flujo de datos.- Soporte para la ramificación (
AddBranch
) y las llamadas a las herramientas. Stream
intercambiablesInvoke
Obtener salida de streaming.
4. Configuración del streaming
Eino ofrece cuatro paradigmas de streaming: Invoke, Stream, Collect y Transform.
- Ejemplo de flujo de salida
stream, _ := runnable.Stream(ctx, map[string]any{"query": "你好,世界!"}) for chunk := range stream { if chunk.Err != nil { panic(chunk.Err) } print(chunk.Value.Content) }
- Análisis funcional
- Eino gestiona automáticamente el empalme (por ejemplo, a nodos que no son del flujo) y la división (por ejemplo, la copia al bifurcarse) de los flujos.
- Los nodos descendentes no necesitan preocuparse por el estado del flujo ascendente y el marco lo gestiona de forma transparente.
5. Añadir un mecanismo de devolución de llamada
Las retrollamadas se utilizan para el registro, el seguimiento y otras extensiones.
- ejemplo de código
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))
- Puntos operativos
- adyuvante
OnStart
yOnEnd
Cinco tipos de cortes como. - pasable
WithCallbacks
Especifica el nodo o el efecto global.
- adyuvante
Función destacada Operación
1. Agente ReAct
- Descripción funcional
El agente ReAct combina ChatModel y llamadas a herramientas para permitir bucles de decisión autónomos. - procedimiento
- consulta react.go.
- Ejecute el ejemplo: configure el modelo y las herramientas, llame a la función
Invoke
Implantación.
2. Depuración visual
- Descripción funcional
aprobar (una factura o inspección, etc.) Eino Devops Permite depurar la interfaz de usuario. - procedimiento
- tire de
eino-ext
Almacén, correrdevops
ver la configuración del documento.
- tire de
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...