일반 소개
Eino는 대규모 모델(LLM) 애플리케이션을 위한 궁극적인 개발 도구를 목표로 CloudWeGo 팀이 출시한 Golang 기반 오픈 소스 프레임워크입니다. LangChain, LlamaIndex와 같은 오픈 소스 프레임워크의 우수한 설계를 바탕으로 최첨단 연구 결과와 ByteDance의 내부 실무 경험을 결합하여 간단하고 확장 가능하며 효율적인 개발 환경을 제공하며, 잘 설계된 구성 요소 추상화, 강력한 오케스트레이션 기능, 완벽한 스트리밍 지원 및 유형 안전 기능을 통해 개발자가 안정적인 AI 애플리케이션을 신속하게 구축할 수 있도록 도와줍니다. Eino Eino는 ByteDance(예: Jitter, Doubao) 내에서 널리 사용되어 왔으며, 현재 GitHub에 오픈 소스화되어 높은 코드 커버리지와 활발한 커뮤니티를 통해 Golang 생태계에서 AI 개발의 표준화 및 효율성을 촉진하는 데 전념하고 있습니다.

기능 목록
- 풍부한 컴포넌트 추상화채팅 모델, 도구, 채팅 템플릿 등 재사용 가능한 구성 요소를 제공하여 중첩 및 복잡한 로직 캡슐화를 지원합니다.
- 강력한 안무체인 및 그래프 모드를 모두 지원하며, 유형 검사, 동시성 관리, 데이터 흐름 오케스트레이션을 처리합니다.
- 완벽한 스트리밍 처리스트리밍 데이터의 접합, 분할, 병합 및 복사를 자동으로 처리하여 다양한 스트리밍 패러다임에 적응합니다.
- 확장성이 뛰어난 컷아웃콜백 메커니즘이 내장되어 로깅 및 추적과 같은 크로스 커팅 문제를 지원합니다.
- 유형 안전Golang 컴파일 시간 검사를 사용하여 입력과 출력이 일치하는지 확인합니다.
- 개발 도구 세트전체 개발 주기를 포괄하는 시각적 디버깅, 평가기 등을 제공합니다.
- 모범 사례 예시: 내장 ReAct 풍부한 샘플 코드가 포함된 에이전트 및 기타 프로세스 구현.
도움말 사용
설치 프로세스
Eino는 Golang 프레임워크이며 설치를 위해 Go 환경이 필요합니다. 자세한 단계는 다음과 같습니다:
- Go 설치
- Go 웹사이트를 방문하여 버전 1.18 이상을 다운로드하세요.
- 설치가 완료되면 다음을 실행합니다.
go version
버전 확인(예go1.21.0
).
- Eino 코어 라이브러리 가져오기
- 터미널에서 실행됩니다:
go get github.com/cloudwego/eino@latest
- 컴포넌트를 확장해야 하는 경우(예: OpenAI 지원) 실행합니다:
go get github.com/cloudwego/eino-ext@latest
- 터미널에서 실행됩니다:
- 설치 확인
- 문서 만들기
main.go
::package main import "github.com/cloudwego/eino" func main() { println("Eino installed successfully!") }
- 수행
go run main.go
출력에 성공하면 프로세스가 완료된 것입니다.
- 문서 만들기
- 종속성 문
- 커뮤니티 지원
- 깃허브 이슈를 방문하여 이슈를 제출하거나 플라잉북 사용자 그룹에 가입하세요(공식 페이지의 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. 복잡한 일정에 그래프 사용하기
그래프는 도구 호출과 같은 시나리오에 적합한 주기적 또는 비주기적 방향 그래프를 지원합니다.
- 코드 예제
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는 호출, 스트리밍, 수집, 변환의 네 가지 스트리밍 패러다임을 제공합니다.
- 스트리밍 출력 예시
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
다음과 같은 5가지 유형의 컷이 있습니다. - 통과 가능
WithCallbacks
노드 또는 전역 효과를 지정합니다.
- 지원
주요 기능 작동
1. 리액트 에이전트
- 기능 설명
ReAct 에이전트는 ChatModel과 툴 호출을 결합하여 자율적인 의사 결정 주기를 가능하게 합니다. - 절차
- 상담 react.go.
- 예제 실행: 모델 및 도구 구성, 모델과 도구를 구성하고
Invoke
구현.
2. 시각적 디버깅
- 기능 설명
통과(청구서 또는 검사 등) Eino Devops UI 디버깅을 제공합니다. - 절차
- pull
eino-ext
창고, 실행devops
모듈에서 문서 구성을 확인합니다.
- pull
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...