mirror of
https://github.com/Canner/WrenAI.git
synced 2026-09-01 15:34:04 +08:00
chore(wren-ai-service): separate the api key for each LLM and embedder (#917)
This commit is contained in:
@@ -24,11 +24,16 @@ spec:
|
||||
configMapKeyRef:
|
||||
name: wren-config
|
||||
key: WREN_AI_SERVICE_PORT
|
||||
- name: OPENAI_API_KEY
|
||||
- name: LLM_OPENAI_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: wrenai-secrets
|
||||
key: LLM_OPENAI_API_KEY
|
||||
- name: EMBEDDER_OPENAI_API_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: wrenai-secrets
|
||||
key: EMBEDDER_OPENAI_API_KEY
|
||||
- name: QDRANT_HOST
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
|
||||
@@ -7,6 +7,7 @@ type: Opaque
|
||||
data:
|
||||
# LLM_OPENAI_API_KEY and EMBEDDER_OPENAI_API_KEY are REQUIRED: without a valid key the wren-ai-service-deployment pod will not start
|
||||
LLM_OPENAI_API_KEY: UkVRVUlSRUQ6IHNrLXByb2otYWxsLWFjY2Vzcy1wbGFjZWhvbGRlci00LXdyZW4tYWktc2VydmljZS1kZXBsb3ltZW50
|
||||
EMBEDDER_OPENAI_API_KEY: UkVRVUlSRUQ6IHNrLXByb2otYWxsLWFjY2Vzcy1wbGFjZWhvbGRlci00LXdyZW4tYWktc2VydmljZS1kZXBsb3ltZW50
|
||||
|
||||
# Azure openai env
|
||||
AZURE_CHAT_BASE: bi9h
|
||||
|
||||
+4
-2
@@ -18,8 +18,10 @@ QDRANT_HOST=qdrant
|
||||
SHOULD_FORCE_DEPLOY=1
|
||||
|
||||
# vendor keys
|
||||
OPENAI_API_KEY=
|
||||
AZURE_OPENAI_API_KEY=
|
||||
LLM_OPENAI_API_KEY=
|
||||
EMBEDDER_OPENAI_API_KEY=
|
||||
LLM_AZURE_OPENAI_API_KEY=
|
||||
EMBEDDER_AZURE_OPENAI_API_KEY=
|
||||
QDRANT_API_KEY=
|
||||
|
||||
# version
|
||||
|
||||
@@ -44,8 +44,10 @@ services:
|
||||
WREN_UI_PORT: ${WREN_UI_PORT}
|
||||
QDRANT_HOST: ${QDRANT_HOST}
|
||||
WREN_UI_ENDPOINT: ${WREN_UI_ENDPOINT}
|
||||
OPENAI_API_KEY: ${OPENAI_API_KEY}
|
||||
AZURE_OPENAI_API_KEY: ${AZURE_OPENAI_API_KEY}
|
||||
LLM_OPENAI_API_KEY: ${LLM_OPENAI_API_KEY}
|
||||
EMBEDDER_OPENAI_API_KEY: ${EMBEDDER_OPENAI_API_KEY}
|
||||
LLM_AZURE_OPENAI_API_KEY: ${LLM_AZURE_OPENAI_API_KEY}
|
||||
EMBEDDER_AZURE_OPENAI_API_KEY: ${EMBEDDER_AZURE_OPENAI_API_KEY}
|
||||
QDRANT_API_KEY: ${QDRANT_API_KEY}
|
||||
SHOULD_FORCE_DEPLOY: ${SHOULD_FORCE_DEPLOY}
|
||||
# sometimes the console won't show print messages,
|
||||
|
||||
@@ -56,8 +56,10 @@ services:
|
||||
WREN_UI_PORT: ${WREN_UI_PORT}
|
||||
QDRANT_HOST: ${QDRANT_HOST}
|
||||
WREN_UI_ENDPOINT: http://wren-ui:${WREN_UI_PORT}
|
||||
OPENAI_API_KEY: ${OPENAI_API_KEY}
|
||||
AZURE_OPENAI_API_KEY: ${AZURE_OPENAI_API_KEY}
|
||||
LLM_OPENAI_API_KEY: ${LLM_OPENAI_API_KEY}
|
||||
EMBEDDER_OPENAI_API_KEY: ${EMBEDDER_OPENAI_API_KEY}
|
||||
LLM_AZURE_OPENAI_API_KEY: ${LLM_AZURE_OPENAI_API_KEY}
|
||||
EMBEDDER_AZURE_OPENAI_API_KEY: ${EMBEDDER_AZURE_OPENAI_API_KEY}
|
||||
QDRANT_API_KEY: ${QDRANT_API_KEY}
|
||||
SHOULD_FORCE_DEPLOY: ${SHOULD_FORCE_DEPLOY}
|
||||
# sometimes the console won't show print messages,
|
||||
|
||||
@@ -195,8 +195,7 @@ class AsyncDocumentEmbedder(AzureOpenAIDocumentEmbedder):
|
||||
class AzureOpenAIEmbedderProvider(EmbedderProvider):
|
||||
def __init__(
|
||||
self,
|
||||
api_key: Secret = Secret.from_env_var("AZURE_OPENAI_API_KEY")
|
||||
or Secret.from_env_var("EMBEDDER_AZURE_OPENAI_API_KEY"),
|
||||
api_key: Secret = Secret.from_env_var("EMBEDDER_AZURE_OPENAI_API_KEY"),
|
||||
api_base: str = os.getenv("EMBEDDER_AZURE_OPENAI_API_BASE"),
|
||||
api_version: str = os.getenv("EMBEDDER_AZURE_OPENAI_VERSION"),
|
||||
model: str = os.getenv("EMBEDDING_MODEL") or EMBEDDING_MODEL,
|
||||
|
||||
@@ -183,8 +183,7 @@ class AsyncDocumentEmbedder(OpenAIDocumentEmbedder):
|
||||
class OpenAIEmbedderProvider(EmbedderProvider):
|
||||
def __init__(
|
||||
self,
|
||||
api_key: str = os.getenv("OPENAI_API_KEY")
|
||||
or os.getenv("EMBEDDER_OPENAI_API_KEY"),
|
||||
api_key: str = os.getenv("EMBEDDER_OPENAI_API_KEY"),
|
||||
api_base: str = os.getenv("EMBEDDER_OPENAI_API_BASE")
|
||||
or EMBEDDER_OPENAI_API_BASE,
|
||||
model: str = os.getenv("EMBEDDING_MODEL") or EMBEDDING_MODEL,
|
||||
|
||||
@@ -125,8 +125,7 @@ class AsyncGenerator(AzureOpenAIGenerator):
|
||||
class AzureOpenAILLMProvider(LLMProvider):
|
||||
def __init__(
|
||||
self,
|
||||
api_key: Secret = Secret.from_env_var("AZURE_OPENAI_API_KEY")
|
||||
or Secret.from_env_var("LLM_AZURE_OPENAI_API_KEY"),
|
||||
api_key: Secret = Secret.from_env_var("LLM_AZURE_OPENAI_API_KEY"),
|
||||
api_base: str = os.getenv("LLM_AZURE_OPENAI_API_BASE"),
|
||||
api_version: str = os.getenv("LLM_AZURE_OPENAI_VERSION"),
|
||||
model: str = os.getenv("GENERATION_MODEL") or GENERATION_MODEL,
|
||||
|
||||
@@ -157,7 +157,7 @@ class AsyncGenerator(OpenAIGenerator):
|
||||
class OpenAILLMProvider(LLMProvider):
|
||||
def __init__(
|
||||
self,
|
||||
api_key: str = os.getenv("OPENAI_API_KEY") or os.getenv("LLM_OPENAI_API_KEY"),
|
||||
api_key: str = os.getenv("LLM_OPENAI_API_KEY"),
|
||||
api_base: str = os.getenv("LLM_OPENAI_API_BASE") or LLM_OPENAI_API_BASE,
|
||||
model: str = os.getenv("GENERATION_MODEL") or GENERATION_MODEL,
|
||||
kwargs: Dict[str, Any] = (
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
CONFIG_PATH=config.yaml
|
||||
|
||||
# vendor keys
|
||||
OPENAI_API_KEY=
|
||||
AZURE_OPENAI_API_KEY=
|
||||
LLM_OPENAI_API_KEY=
|
||||
LLM_AZURE_OPENAI_API_KEY=
|
||||
EMBEDDER_OPENAI_API_KEY=
|
||||
EMBEDDER_AZURE_OPENAI_API_KEY=
|
||||
QDRANT_API_KEY=
|
||||
|
||||
# langfuse key
|
||||
|
||||
@@ -26,8 +26,8 @@ const (
|
||||
// please change the version when the version is updated
|
||||
WREN_PRODUCT_VERSION string = "0.10.0"
|
||||
DOCKER_COMPOSE_YAML_URL string = "https://raw.githubusercontent.com/Canner/WrenAI/" + WREN_PRODUCT_VERSION + "/docker/docker-compose.yaml"
|
||||
DOCKER_COMPOSE_ENV_URL string = "https://raw.githubusercontent.com/Canner/WrenAI/" + WREN_PRODUCT_VERSION + "/docker/.env.example"
|
||||
AI_SERVICE_CONFIG_URL string = "https://raw.githubusercontent.com/Canner/WrenAI/" + WREN_PRODUCT_VERSION + "/docker/config.example.yaml"
|
||||
DOCKER_COMPOSE_ENV_URL string = "https://raw.githubusercontent.com/Canner/WrenAI/" + WREN_PRODUCT_VERSION + "/docker/.env.example"
|
||||
AI_SERVICE_CONFIG_URL string = "https://raw.githubusercontent.com/Canner/WrenAI/" + WREN_PRODUCT_VERSION + "/docker/config.example.yaml"
|
||||
)
|
||||
|
||||
func replaceEnvFileContent(content string, projectDir string, openaiApiKey string, openAIGenerationModel string, hostPort int, aiPort int, userUUID string, telemetryEnabled bool) string {
|
||||
@@ -39,9 +39,13 @@ func replaceEnvFileContent(content string, projectDir string, openaiApiKey strin
|
||||
reg = regexp.MustCompile(`SHOULD_FORCE_DEPLOY=(.*)`)
|
||||
str = reg.ReplaceAllString(str, "SHOULD_FORCE_DEPLOY=1")
|
||||
|
||||
// replace OPENAI_API_KEY
|
||||
reg = regexp.MustCompile(`(?m)^OPENAI_API_KEY=(.*)`)
|
||||
str = reg.ReplaceAllString(str, "OPENAI_API_KEY="+openaiApiKey)
|
||||
// replace LLM_OPENAI_API_KEY
|
||||
reg = regexp.MustCompile(`LLM_OPENAI_API_KEY=(.*)`)
|
||||
str = reg.ReplaceAllString(str, "LLM_OPENAI_API_KEY="+openaiApiKey)
|
||||
|
||||
// replace EMBEDDER_OPENAI_API_KEY
|
||||
reg = regexp.MustCompile(`EMBEDDER_OPENAI_API_KEY=(.*)`)
|
||||
str = reg.ReplaceAllString(str, "EMBEDDER_OPENAI_API_KEY="+openaiApiKey)
|
||||
|
||||
// replace GENERATION_MODEL
|
||||
// it seems like using for telemetry to know the model, might be we can remove this in the future and provide a endpoint to get the information
|
||||
@@ -149,8 +153,6 @@ func PrepareConfigFileForOpenAI(projectDir string, generationModel string) error
|
||||
// replace the generation model in config.yaml
|
||||
config := string(content)
|
||||
config = strings.ReplaceAll(config, "openai_llm.gpt-4o-mini", "openai_llm."+generationModel)
|
||||
// disable the langfuse for starting wren-ai from the launcher
|
||||
config = strings.ReplaceAll(config, "langfuse_enable: true", "langfuse_enable: false")
|
||||
|
||||
// write back to config.yaml
|
||||
err = os.WriteFile(configPath, []byte(config), 0644)
|
||||
|
||||
Reference in New Issue
Block a user