feat: add auto load env (#21)

* feat: add env auto load

* feat: add env auto load

* feat: add env auto load

* feat: add env auto load

* feat: add env auto load

* feat: add env auto load

* doc: add notice of eino_assistant

* doc: add notice of eino_assistant

* doc: add notice of eino_assistant

* doc: add notice of eino_assistant

* doc: add notice of eino_assistant
drew/english
kuhaha 1 year ago committed by GitHub
parent c802472524
commit 8afa91ad48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -18,6 +18,10 @@ jobs:
golangci-lint:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
repository-projects: write
steps:
- uses: actions/checkout@v4
- name: Set up Go

@ -5,6 +5,10 @@ on: [ push, pull_request ]
jobs:
unit-benchmark-test:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
repository-projects: write
steps:
- uses: actions/checkout@v4
- name: Set up Go

@ -1,7 +1,8 @@
# output configuration options
output:
# Format: colored-line-number|line-number|json|tab|checkstyle|code-climate|junit-xml|github-actions
formats: colored-line-number
formats:
- format: colored-line-number
# All available settings of specific linters.
# Refer to https://golangci-lint.run/usage/linters
linters-settings:
@ -31,4 +32,4 @@ issues:
exclude-use-default: true
exclude-files:
- ".*\\.mock\\.go$"
exclude-dirs:
exclude-dirs: []

@ -24,6 +24,8 @@ import (
"github.com/cloudwego/eino/schema"
)
// INFO: 参考文档 https://www.cloudwego.io/zh/docs/eino/core_modules/components/lambda_guide/
type Options struct {
Filed1 string
}

@ -1,8 +1,12 @@
## 说明
### 文档地址
[eino 实践教程](https://www.cloudwego.io/zh/docs/eino/overview/bytedance_eino_practice/)
### docker 启动 redis 作为向量数据库
```bash
# Notice: 如果本地已经安装了 redis则需要先停止本地的 redis 容器,再执行上述命令,否则端口冲突会导致启动失败
docker-compose up -d
# 可以在 http://127.0.0.1:8001 看到 redis 的 web 界面
# redis 监听在 127.0.0.1:6379, 使用 redis-cli ping 可测试
@ -26,7 +30,7 @@ export ARK_EMBEDDING_MODEL=xxx
```bash
# 为了使用 data 目录,需要在 eino_assistant 目录下执行指令
go run cmd/einoagent/*.go
go run cmd/einoagent/main.go
```
### 访问

@ -22,6 +22,8 @@ import (
"os"
"time"
"github.com/cloudwego/eino-examples/quickstart/eino_assistant/pkg/env"
"github.com/cloudwego/eino-ext/devops"
"github.com/cloudwego/eino-examples/quickstart/eino_assistant/cmd/einoagent/agent"
@ -38,6 +40,9 @@ func init() {
log.Printf("[eino dev] init failed, err=%v", err)
}
}
// check some essential envs
env.MustHasEnvs("ARK_CHAT_MODEL", "ARK_EMBEDDING_MODEL", "ARK_API_KEY")
}
func main() {

@ -30,6 +30,8 @@ import (
"strconv"
"strings"
"github.com/cloudwego/eino-examples/quickstart/eino_assistant/pkg/env"
"github.com/cloudwego/eino-ext/callbacks/langfuse"
"github.com/cloudwego/eino-ext/devops"
"github.com/cloudwego/eino/callbacks"
@ -109,6 +111,8 @@ func main() {
}
func Init() error {
// check some essential envs
env.MustHasEnvs("ARK_CHAT_MODEL", "ARK_EMBEDDING_MODEL", "ARK_API_KEY")
os.MkdirAll("log", 0755)
var f *os.File

@ -23,6 +23,8 @@ import (
"path/filepath"
"strings"
"github.com/cloudwego/eino-examples/quickstart/eino_assistant/pkg/env"
"github.com/cloudwego/eino-ext/components/document/transformer/splitter/markdown"
"github.com/cloudwego/eino/components/document"
"github.com/cloudwego/eino/components/embedding"
@ -31,6 +33,11 @@ import (
"github.com/cloudwego/eino-examples/quickstart/eino_assistant/eino/knowledgeindexing"
)
func init() {
// check some essential envs
env.MustHasEnvs("ARK_API_KEY", "ARK_EMBEDDING_MODEL")
}
func main() {
ctx := context.Background()

@ -3,7 +3,7 @@ module github.com/cloudwego/eino-examples/quickstart/eino_assistant
go 1.21
require (
github.com/cloudwego/eino v0.3.7
github.com/cloudwego/eino v0.3.9
github.com/cloudwego/eino-ext/callbacks/langfuse v0.0.0-20250117061805-cd80d1780d76
github.com/cloudwego/eino-ext/components/model/ark v0.0.0-20250117061805-cd80d1780d76
github.com/cloudwego/eino-ext/components/retriever/redis v0.0.0-20250117061805-cd80d1780d76
@ -12,6 +12,7 @@ require (
github.com/cloudwego/hertz v0.9.5
github.com/google/uuid v1.6.0
github.com/hertz-contrib/sse v0.0.6-0.20240617114443-10a844794bf3
github.com/joho/godotenv v1.5.1
github.com/redis/go-redis/v9 v9.7.0
)

@ -28,8 +28,8 @@ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
github.com/cloudwego/eino v0.3.7 h1:PE1yFaAPVenRhDl0x6N1U2rKrfZkSr1hKlcacO6P+VA=
github.com/cloudwego/eino v0.3.7/go.mod h1:+kmJimGEcKuSI6OKhet7kBedkm1WUZS3H1QRazxgWUo=
github.com/cloudwego/eino v0.3.9 h1:pMg1uk+nLKJkpDiyJfikHNMb/pcWQWOaW7YWVuwlwQQ=
github.com/cloudwego/eino v0.3.9/go.mod h1:+kmJimGEcKuSI6OKhet7kBedkm1WUZS3H1QRazxgWUo=
github.com/cloudwego/eino-ext/callbacks/langfuse v0.0.0-20250117061805-cd80d1780d76 h1:ItCp3l6FEb2UAGp8S5n7+zIVF3HRnipn5AOjtCvawkU=
github.com/cloudwego/eino-ext/callbacks/langfuse v0.0.0-20250117061805-cd80d1780d76/go.mod h1:5StXiP9SugyHuqTZ1cAX5wOGnQq4hKGK+R81C74uHHM=
github.com/cloudwego/eino-ext/components/document/loader/file v0.0.0-20250116071241-3f1eaaafd49c h1:FCsu5ctlFx8Frxu/LcswWk3vB/26qbYIKEKKIQOKubQ=
@ -124,6 +124,8 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=

@ -0,0 +1,40 @@
/*
* Copyright 2025 CloudWeGo Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package env
import (
"log"
"os"
"github.com/joho/godotenv"
)
func init() {
err := godotenv.Load()
if err != nil {
log.Fatalf("❌ [ERROR] Error loading .env file: %v", err)
}
}
func MustHasEnvs(envs ...string) {
for _, env := range envs {
if os.Getenv(env) == "" {
log.Fatalf("❌ [ERROR] env [%s] is required, but is not set now, please check your .env file", env)
}
}
}
Loading…
Cancel
Save