Eino
字节跳动开源的Go语言AI Agent开发框架,支持多Agent编排、DAG调度、长任务自主执行等能力
Timeline (last 90 days)
Implementing an http.RoundTripper that caches the request body and retries with exponential backoff on 429 or 5xx is a workable way to make up for Eino's lack of automatic retries.
The BaseURL field of Eino's ChatModelConfig must include /v1; Eino only appends /chat/completions and does not automatically add /v1.
Eino does not read OPENAI_API_KEY or OPENAI_BASE_URL from environment variables and must be passed them explicitly.
The Timeout field of Eino's ChatModelConfig sets no timeout by default, so it must be configured manually or a custom HTTPClient passed in.
Eino's request body is minimal by default, containing only messages and model, and does not send temperature or max_tokens.
Eino's sampling parameters such as Temperature, MaxTokens and TopP are all pointer types, so setting them to zero really sends the corresponding field in the request body (e.g. "temperature":0).
Eino's streaming call cm.Stream automatically adds "stream":true and "stream_options":{"include_usage":true}.
For reasoning models, Eino maps reasoning_content in the response to out.ReasoningContent, and inline <think> tags are kept in out.Content; the framework does not strip them.
For 401, 400, 429 (with Retry-After), 500 or 503 responses, Eino sends the request only once and never retries automatically, and Retry-After is ignored.
Checking Eino errors requires matching eino-ext's own *openai.APIError type rather than the underlying go-openai type, because the component performs type conversion.
1 more timeline events
All Facts (11)
Implementing an http.RoundTripper that caches the request body and retries with exponential backoff on 429 or 5xx is a workable way to make up for Eino's lack of automatic retries.
50%UnverifiedThe BaseURL field of Eino's ChatModelConfig must include /v1; Eino only appends /chat/completions and does not automatically add /v1.
50%UnverifiedEino does not read OPENAI_API_KEY or OPENAI_BASE_URL from environment variables and must be passed them explicitly.
50%UnverifiedThe Timeout field of Eino's ChatModelConfig sets no timeout by default, so it must be configured manually or a custom HTTPClient passed in.
50%UnverifiedEino's request body is minimal by default, containing only messages and model, and does not send temperature or max_tokens.
50%UnverifiedEino's sampling parameters such as Temperature, MaxTokens and TopP are all pointer types, so setting them to zero really sends the corresponding field in the request body (e.g. "temperature":0).
50%UnverifiedEino's streaming call cm.Stream automatically adds "stream":true and "stream_options":{"include_usage":true}.
50%UnverifiedFor reasoning models, Eino maps reasoning_content in the response to out.ReasoningContent, and inline <think> tags are kept in out.Content; the framework does not strip them.
50%UnverifiedFor 401, 400, 429 (with Retry-After), 500 or 503 responses, Eino sends the request only once and never retries automatically, and Retry-After is ignored.
50%UnverifiedChecking Eino errors requires matching eino-ext's own *openai.APIError type rather than the underlying go-openai type, because the component performs type conversion.
50%Unverified字节跳动开源的Eino是Go语言社区中较为活跃的Agent开发框架,提供Tool调用、Chain编排、Memory管理等核心能力,设计理念参考LangChain并针对Go并发特性优化
50%