Eino: Open Source Golang Big Model Application Development Framework от ByteDance

Общее введение

Eino - это фреймворк с открытым исходным кодом на базе языка Golang, созданный командой CloudWeGo и призванный стать идеальным инструментом разработки приложений для больших моделей (LLM). Он опирается на превосходный дизайн таких открытых фреймворков, как LangChain и LlamaIndex, и сочетает в себе результаты передовых исследований и внутренний практический опыт ByteDance для обеспечения простой, масштабируемой и эффективной разработки. Eino помогает разработчикам быстро создавать надежные AI-приложения благодаря хорошо продуманным абстракциям компонентов, мощным возможностям оркестровки, полной поддержке потоковой передачи и функциям безопасности типов. Eino Eino широко используется в компании ByteDance (например, Jitter, Doubao), а в настоящее время находится в открытом доступе на GitHub, имеет высокий уровень покрытия кода и активное сообщество, занимающееся стандартизацией и повышением эффективности разработки ИИ в экосистеме Golang.

Eino:字节跳动开源的Golang大模型应用开发框架

 

Список функций

  • Богатая абстракция компонентов: Предоставляет многократно используемые компоненты, такие как ChatModel, Tool, ChatTemplate и т.д., поддерживая вложенность и инкапсуляцию сложной логики.
  • Мощная хореография: Поддерживает режимы цепочки и графа, выполняет проверку типов, управление параллелизмом и оркестровку потоков данных.
  • Полная обработка потоков: Автоматически обрабатывает сплит, разделение, слияние и копирование потоковых данных, адаптируясь к различным парадигмам потоковой передачи.
  • Масштабируемые вырезы: Встроенный механизм обратных вызовов для поддержки инжекции сквозных задач, таких как протоколирование и трассировка.
  • безопасность типа: Используйте проверки времени компиляции Golang, чтобы убедиться, что входные и выходные данные совпадают.
  • Набор инструментов для разработки: Обеспечивает визуальную отладку, оценщики и т.д., охватывая весь цикл разработки.
  • Примеры лучших практик: Встроенный ReAct Реализация агентов и других процессов с богатым примером кода.

 

Использование помощи

Процесс установки

Eino - это фреймворк Golang, и для его установки требуется среда Go. Ниже приведены подробные шаги:

  1. Установите Go
    • Посетите веб-сайт Go, чтобы загрузить версию 1.18 или выше.
    • После завершения установки запустите go version Проверьте версию (например. go1.21.0).
  2. Извлечение библиотек ядра Eino
    • Запускается в терминале:
      go get github.com/cloudwego/eino@latest
      
    • Если вам нужно расширить компонент (например, для поддержки OpenAI), выполните это:
      go get github.com/cloudwego/eino-ext@latest
      
  3. Проверка установки
    • Создание документов main.go::
      package main
      import "github.com/cloudwego/eino"
      func main() {
      println("Eino installed successfully!")
      }
      
    • осуществлять go run main.goЕсли выход успешный, процесс завершен.
  4. заявление о зависимости
    • Зависимости Эйно kin-openapi версия v0.118.0 для совместимости с Go 1.18.
    • Дополнительно:EinoExt Предоставьте больше реализаций компонентов.
  5. Поддержка общества
    • Посетите GitHub Issues, чтобы отправить проблему или присоединиться к группе пользователей Flying Book (см. QR-код на официальной странице).

Основные функции

1. Используйте ChatModel напрямую

ChatModel - это базовый компонент, который используется для вызова большой модели для генерации контента.

  • пример кода
    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)
    }
  • Инструкция по эксплуатации
    • расход или издержки NewChatModel Инициализируйте экземпляр модели, передав ему контекст и конфигурацию API.
    • приглашения Generate метод генерирует непотоковый вывод.
    • Другие модели (например, LLaMA) могут поддерживаться с помощью компонентов расширения.

2. Оркестрирование простых процессов с помощью Chain

Цепочка подходит для линейных процессов, таких как шаблоны + модели.

  • пример кода
    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)
    }
    
  • Инструкция по эксплуатации
    • NewChain Определите типы входных и выходных сигналов, которыеAppend Добавьте узел.
    • Compile Цепочка компиляции.Invoke Выполните и верните результат.
    • Хорошо подходит для выполнения простых последовательных задач "туда-сюда".

3. Использование графика для составления сложных расписаний

Graph поддерживает циклические или ациклические направленные графы, что подходит для таких сценариев, как вызовы инструментов.

  • пример кода
    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)
    }
    
  • Инструкция по эксплуатации
    • Add*Node Добавление узлов.AddEdge Определите направление потока данных.
    • Поддержка ветвления (AddBranch) и вызовы инструментов.
    • Stream сменные Invoke Получение потокового вывода.

4. Настройка потоковой передачи

Eino предоставляет четыре парадигмы потоковой передачи данных: Invoke, Stream, Collect и Transform.

  • Пример потокового вывода
    stream, _ := runnable.Stream(ctx, map[string]any{"query": "你好,世界!"})
    for chunk := range stream {
    if chunk.Err != nil {
    panic(chunk.Err)
    }
    print(chunk.Value.Content)
    }
    
  • Функциональный анализ
    • Eino автоматически обрабатывает сращивание (например, в узлы, не относящиеся к потоку) и разделение (например, копирование при разветвлении) потоков.
    • Узлам нисходящего потока не нужно заботиться о состоянии восходящего потока, фреймворк обрабатывает его прозрачно.

5. Добавление механизма обратного вызова

Обратные вызовы используются для ведения журнала, трассировки и других расширений.

  • пример кода
    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))
    
  • Рабочие точки
    • адъювант OnStart, иOnEnd Пять видов разрезов, таких как.
    • проходной WithCallbacks Укажите узел или глобальный эффект.

Функциональное управление

1. ReAct Agent

  • Функциональное описание
    Агент ReAct сочетает в себе ChatModel и вызовы инструментов, чтобы обеспечить автономный цикл принятия решений.
  • процедура
    • консультация react.go.
    • Запустите пример: настройте модель и инструменты, вызовите Invoke Реализация.

2. Визуальная отладка

  • Функциональное описание
    пройти (законопроект, проверку и т.д.) Эйно Девопс Обеспечивает отладку пользовательского интерфейса.
  • процедура
    • тянуть eino-ext Склад, бег devops модуль, просмотрите конфигурацию документа.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...