Eino: marco de desarrollo de aplicaciones Big Model Golang de código abierto de ByteDance

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.

Eino:字节跳动开源的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:

  1. 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 ejemplo go1.21.0).
  2. 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
      
  3. 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.goSi la salida es correcta, el proceso se ha completado.
  4. 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.
  5. 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.

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 intercambiables Invoke 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 OnStartyOnEnd Cinco tipos de cortes como.
    • pasable WithCallbacks Especifica el nodo o el efecto global.

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, correr devops ver la configuración del documento.
© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...