Aprendizagem pessoal com IA
e orientação prática
Beanbag Marscode1

Eino: estrutura de desenvolvimento de aplicativos Golang Big Model de código aberto da ByteDance

Introdução geral

O Eino é uma estrutura de código aberto baseada em Golang lançada pela equipe do CloudWeGo, com o objetivo de ser a ferramenta de desenvolvimento definitiva para aplicativos de modelo grande (LLM). Ele se baseia no excelente design de estruturas de código aberto, como LangChain e LlamaIndex, e combina resultados de pesquisa de ponta e a experiência prática interna da ByteDance para oferecer uma experiência de desenvolvimento simples, dimensionável e eficiente. O Eino ajuda os desenvolvedores a criar rapidamente aplicativos de IA confiáveis por meio de abstrações de componentes bem projetadas, recursos avançados de orquestração, suporte completo a streaming e recursos de segurança de tipos. O Eino é o primeiro aplicativo de IA a ser desenvolvido com base no Eino. O Eino tem sido amplamente utilizado na ByteDance (por exemplo, Jitter, Doubao) e agora tem código aberto no GitHub, com alta cobertura de código e uma comunidade ativa dedicada a promover a padronização e a eficiência do desenvolvimento de IA no ecossistema Golang.

blank


 

Lista de funções

  • Rica abstração de componentesChatModel: fornece componentes reutilizáveis, como ChatModel, Tool, ChatTemplate etc., com suporte para aninhamento e encapsulamento de lógica complexa.
  • Coreografia poderosaSuporte aos modos Chain e Graph, manipulação de verificação de tipos, gerenciamento de simultaneidade e orquestração de fluxo de dados.
  • Processamento completo de streamingTratamento automático de emendas, divisões, fusões e cópias de dados de streaming, adaptando-se a vários paradigmas de streaming.
  • Recortes altamente escalonáveisMecanismo de retorno de chamada incorporado para dar suporte à injeção de preocupações transversais, como registro e rastreamento.
  • segurança de tipoUse as verificações de tempo de compilação da Golang para garantir que as entradas e saídas correspondam.
  • Conjunto de ferramentas de desenvolvimentoDepuração visual: fornece depuração visual, avaliadores, etc., cobrindo todo o ciclo de desenvolvimento.
  • Exemplos de práticas recomendadasIntegrado ReAct Implementação de agentes e outros processos, com código de amostra rico.

 

Usando a Ajuda

Processo de instalação

O Eino é uma estrutura Golang e requer um ambiente Go para ser instalado. Aqui estão as etapas detalhadas:

  1. Instalar o Go
    • Visite o site do Go para fazer o download da versão 1.18 ou superior.
    • Após a conclusão da instalação, execute versão go Verifique a versão (por exemplo go1.21.0).
  2. Extração de bibliotecas principais do Eino
    • É executado no terminal:
      acesse github.com/cloudwego/eino@latest
      
    • Se você precisar estender o componente (por exemplo, suporte a OpenAI), execute:
      go get github.com/cloudwego/eino-ext@latest
      
  3. Verificar a instalação
    • Criação de documentos main.go::
      pacote principal
      import "github.com/cloudwego/eino"
      func main() {
      println("Eino instalado com sucesso!")
      }
      
    • realizar go run main.goSe a saída for bem-sucedida, o processo estará concluído.
  4. declaração de dependência
    • Dependências do Eino kin-openapi versão v0.118.0 para compatibilidade com o Go 1.18.
    • Opcional:EinoExt Fornecer mais implementações de componentes.
  5. Suporte à comunidade
    • Visite o GitHub Issues para enviar um problema ou participar do grupo de usuários do Flying Book (consulte o código QR na página oficial).

Funções principais

1. use o ChatModel diretamente

ChatModel é o componente básico, usado para chamar o modelo grande para gerar conteúdo.

  • exemplo 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: "Sua chave OpenAI-API"}
    model, err := openai.NewChatModel(ctx, config)
    if err ! = nil {
    panic(err)
    }
    messages := []*schema.Message{
    {Role: schema.System, Content: "Você é um assistente."} ,
    {Role: schema.User, Content: "Como serão os aplicativos de IA no futuro?"} ,
    }
    msg, err := model.Generate(ctx, messages)
    if err ! = nil {
    panic(err)
    }
    println(msg.Content)
    }
  • Instruções de operação
    • despesa ou gasto NewChatModel Inicializa a instância do modelo, passando o contexto e a configuração da API.
    • invocações Gerar gera uma saída sem fluxo.
    • Outros modelos (por exemplo, LLaMA) podem ser suportados por meio de componentes de extensão.

2. orquestração de processos simples com o Chain

O Chain é adequado para processos lineares, como modelos + modelos.

  • exemplo de código
    package main
    import (
    "contexto"
    "github.com/cloudwego/eino"
    "github.com/cloudwego/eino-ext/components/model/openai"
    )
    func main() {
    ctx := context.Background()
    model, _ := openai.NewChatModel(ctx, &openai.Config{APIKey: "Sua chave de API"})
    prompt := eino.NewChatTemplate("Hello, my name is {{.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)
    }
    
  • Instruções de operação
    • Nova cadeia Definir os tipos de entrada e saída queAnexar Adicionar nó.
    • Compilar A cadeia de compilação.Invocar Executar e retornar o resultado.
    • Bom para tarefas sequenciais simples de ida e volta.

3. uso do Graph para agendamento complexo

O Graph suporta gráficos direcionados cíclicos ou acíclicos, adequados para cenários como chamadas de ferramentas.

  • exemplo de código
    package main
    import (
    "contexto"
    "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: "Sua chave de API"})
    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": "Hello, world!"})
    println(result.Content)
    }
    
  • Instruções de operação
    • Adicionar*Nó Adição de nós.AddEdge Defina a direção do fluxo de dados.
    • Suporte para ramificação (AddBranch) e chamadas de ferramentas.
    • corrente (de água, etc.) intercambiável Invocar Obter saída de streaming.

4. configuração de streaming

O Eino oferece quatro paradigmas de streaming: Invoke, Stream, Collect e Transform.

  • Exemplo de saída de fluxo contínuo
    stream, _ := runnable.Stream(ctx, map[string]any{"query": "Hello, world!"})
    for chunk := range stream {
    if chunk.Err ! = nil {
    panic(chunk.Err)
    }
    print(chunk.Value.Content)
    }
    
  • Análise funcional
    • O Eino lida automaticamente com a emenda (por exemplo, para nós que não são de fluxo) e a divisão (por exemplo, cópia ao ramificar) de fluxos.
    • Os nós downstream não precisam se preocupar com o estado do fluxo upstream e a estrutura lida com isso de forma transparente.

5. adição de um mecanismo de retorno de chamada

Os retornos de chamada são usados para registro, rastreamento e outras extensões.

  • exemplo de código
    handler := eino.NewHandlerBuilder().
    OnStartFn(func(ctx context.Context, info *eino.RunInfo, input eino.CallbackInput) context.Context {
    println("Iniciando:", info.NodeID)
    return ctx
    }).Build()
    result, _ := runnable.Invoke(ctx, map[string]any{"query": "test"}, eino.WithCallbacks(handler))
    
  • Pontos de operação
    • apoiar algo No inícioeOnEnd Cinco tipos de cortes, como.
    • aceitável ComCallbacks Especifique o nó ou o efeito global.

Operação da função em destaque

1. agente ReAct

  • Descrição funcional
    O ReAct Agent combina o ChatModel e as chamadas de ferramentas para permitir loops de decisão autônomos.
  • procedimento
    • consulta react.go.
    • Execute o exemplo: configure o modelo e as ferramentas, chame a função Invocar Implementação.

2. depuração visual

  • Descrição funcional
    aprovar (um projeto de lei ou inspeção etc.) Eino Devops Fornece depuração da interface do usuário.
  • procedimento
    • puxar eino-ext Armazém, executar devops visualize a configuração do documento.
CDN1
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Eino: estrutura de desenvolvimento de aplicativos Golang Big Model de código aberto da ByteDance

Chefe do Círculo de Compartilhamento de IA

O Chief AI Sharing Circle se concentra no aprendizado de IA, fornecendo conteúdo abrangente de aprendizado de IA, ferramentas de IA e orientação prática. Nosso objetivo é ajudar os usuários a dominar a tecnologia de IA e explorar juntos o potencial ilimitado da IA por meio de conteúdo de alta qualidade e compartilhamento de experiências práticas. Seja você um iniciante em IA ou um especialista sênior, este é o lugar ideal para adquirir conhecimento, aprimorar suas habilidades e realizar inovações.

Entre em contato conosco
pt_BRPortuguês do Brasil