WrenAI icon indicating copy to clipboard operation
WrenAI copied to clipboard

Unable to run using Deepseek configuration,My version is 0.15.3

Open SanShangBoy opened this issue 10 months ago • 25 comments

error message

2025-02-13 17:01:49 ERROR:    Traceback (most recent call last):
2025-02-13 17:01:49   File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan
2025-02-13 17:01:49     async with self.lifespan_context(app) as maybe_state:
2025-02-13 17:01:49   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-02-13 17:01:49     return await anext(self.gen)
2025-02-13 17:01:49            ^^^^^^^^^^^^^^^^^^^^^
2025-02-13 17:01:49   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
2025-02-13 17:01:49     async with original_context(app) as maybe_original_state:
2025-02-13 17:01:49   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-02-13 17:01:49     return await anext(self.gen)
2025-02-13 17:01:49            ^^^^^^^^^^^^^^^^^^^^^
2025-02-13 17:01:49   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
2025-02-13 17:01:49     async with original_context(app) as maybe_original_state:
2025-02-13 17:01:49   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-02-13 17:01:49     return await anext(self.gen)
2025-02-13 17:01:49            ^^^^^^^^^^^^^^^^^^^^^
2025-02-13 17:01:49   File "/src/__main__.py", line 32, in lifespan
2025-02-13 17:01:49     app.state.service_container = create_service_container(pipe_components, settings)
2025-02-13 17:01:49                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 17:01:49   File "/src/globals.py", line 240, in create_service_container
2025-02-13 17:01:49     **pipe_components["sql_pairs_deletion"],
2025-02-13 17:01:49       ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 17:01:49 KeyError: 'sql_pairs_deletion'
2025-02-13 17:01:49 
2025-02-13 17:01:49 ERROR:    Application startup failed. Exiting.

config.yaml

-# you should rename this file to config.yaml and put it in ~/.wrenai
-# please pay attention to the comments starting with # and adjust the config accordingly

type: llm
provider: litellm_llm
models:
-# put DEEPSEEK_API_KEY=<your_api_key> in ~/.wrenai/.env
- api_base: https://api.deepseek.com/v1
  api_key_name: DEEPSEEK_API_KEY
  model: deepseek/deepseek-reasoner
  timeout: 120
  kwargs:
    n: 1
    temperature: 0
    response_format:
      type: text
- api_base: https://api.deepseek.com/v1
  api_key_name: DEEPSEEK_API_KEY
  model: deepseek/deepseek-chat
  timeout: 120
  kwargs:
    n: 1
    temperature: 0
    response_format:
      type: text
- api_base: https://api.deepseek.com/v1
  api_key_name: DEEPSEEK_API_KEY
  model: deepseek/deepseek-coder
  timeout: 120
  kwargs:
    n: 1
    temperature: 0
    response_format:
      type: json_object

---
type: embedder
provider: litellm_embedder
models:
-# define OPENAI_API_KEY=<api_key> in ~/.wrenai/.env if you are using openai embedding model
-# please refer to LiteLLM documentation for more details: https://docs.litellm.ai/docs/providers
- model: deepseek/deepseek-chat  # put your embedding model name here, if it is not openai embedding model, should be <provider>/<model_name>
  api_base: https://api.deepseek.com/v1  # change this according to your embedding model
  api_key_name: DEEPSEEK_API_KEY
  timeout: 120

---
type: engine
provider: wren_ui
endpoint: http://wren-ui:3000

---
type: document_store
provider: qdrant
location: http://qdrant:6333
embedding_model_dim: 3072  # put your embedding model dimension here
timeout: 120
recreate_index: true

---
-# please change the llm and embedder names to the ones you want to use
-# the format of llm and embedder should be <provider>.<model_name> such as litellm_llm.gpt-4o-2024-08-06
-# the pipes may be not the latest version, please refer to the latest version: https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/config.example.yaml
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: table_description_indexing
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: db_schema_retrieval
    llm: litellm_llm.deepseek/deepseek-coder
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: historical_question_retrieval
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: sql_generation
    llm: litellm_llm.deepseek/deepseek-coder
    engine: wren_ui
  - name: sql_correction
    llm: litellm_llm.deepseek/deepseek-coder
    engine: wren_ui
  - name: followup_sql_generation
    llm: litellm_llm.deepseek/deepseek-coder
    engine: wren_ui
  - name: sql_summary
    llm: litellm_llm.deepseek/deepseek-coder
  - name: sql_answer
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui
  - name: sql_breakdown
    llm: litellm_llm.deepseek/deepseek-coder
    engine: wren_ui
  - name: sql_expansion
    llm: litellm_llm.deepseek/deepseek-coder
    engine: wren_ui
  - name: semantics_description
    llm: litellm_llm.deepseek/deepseek-chat
  - name: relationship_recommendation
    llm: litellm_llm.deepseek/deepseek-coder
    engine: wren_ui
  - name: question_recommendation
    llm: litellm_llm.deepseek/deepseek-coder
  - name: question_recommendation_db_schema_retrieval
    llm: litellm_llm.deepseek/deepseek-coder
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: question_recommendation_sql_generation
    llm: litellm_llm.deepseek/deepseek-coder
    engine: wren_ui
  - name: chart_generation
    llm: litellm_llm.deepseek/deepseek-coder
  - name: chart_adjustment
    llm: litellm_llm.deepseek/deepseek-coder
  - name: intent_classification
    llm: litellm_llm.deepseek/deepseek-coder
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: data_assistance
    llm: litellm_llm.deepseek/deepseek-chat
  - name: sql_pairs_indexing
    document_store: qdrant
    embedder: litellm_embedder.deepseek/deepseek-chat
  - name: sql_pairs_retrieval
    document_store: qdrant
    embedder: litellm_embedder.deepseek/deepseek-chat
    llm: litellm_llm.deepseek/deepseek-coder
  - name: preprocess_sql_data
    llm: litellm_llm.deepseek/deepseek-coder
  - name: sql_executor
    engine: wren_ui
  - name: sql_question_generation
    llm: litellm_llm.deepseek/deepseek-coder
  - name: sql_generation_reasoning
    llm: litellm_llm.deepseek/deepseek-reasoner
  - name: sql_regeneration
    llm: litellm_llm.deepseek/deepseek-coder
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.deepseek/deepseek-coder

---
settings:
  column_indexing_batch_size: 50
  table_retrieval_size: 10
  table_column_retrieval_size: 100
  allow_using_db_schemas_without_pruning: false  # if you want to use db schemas without pruning, set this to true. It will be faster
  query_cache_maxsize: 1000
  query_cache_ttl: 3600
  langfuse_host: https://cloud.langfuse.com
  langfuse_enable: true
  logging_level: DEBUG
  development: true

env

COMPOSE_PROJECT_NAME=wrenai
PLATFORM=linux/amd64

PROJECT_DIR=.

-# service port
WREN_ENGINE_PORT=8080
WREN_ENGINE_SQL_PORT=7432
WREN_AI_SERVICE_PORT=5555
WREN_UI_PORT=3000
IBIS_SERVER_PORT=8000
WREN_UI_ENDPOINT=http://wren-ui:${WREN_UI_PORT}

-# ai service settings
QDRANT_HOST=qdrant
SHOULD_FORCE_DEPLOY=1

-# vendor keys
LLM_OPENAI_API_KEY=
EMBEDDER_OPENAI_API_KEY=
LLM_AZURE_OPENAI_API_KEY=
EMBEDDER_AZURE_OPENAI_API_KEY=
QDRANT_API_KEY=
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxx

-# version
-# CHANGE THIS TO THE LATEST VERSION
WREN_PRODUCT_VERSION=0.15.3
WREN_ENGINE_VERSION=0.13.1
WREN_AI_SERVICE_VERSION=0.15.7
IBIS_SERVER_VERSION=0.13.1
WREN_UI_VERSION=0.20.1
WREN_BOOTSTRAP_VERSION=0.1.5

-# user id (uuid v4)
USER_UUID=

-# for other services
POSTHOG_API_KEY=phc_nhF32aj4xHXOZb0oqr2cn4Oy9uiWzz6CCP4KZmRq9aE
POSTHOG_HOST=https://app.posthog.com
TELEMETRY_ENABLED=true
-# this is for telemetry to know the model, i think ai-service might be able to provide a endpoint to get the information
GENERATION_MODEL=gpt-4o-mini
LANGFUSE_SECRET_KEY=
LANGFUSE_PUBLIC_KEY=

-# the port exposes to the host
-# OPTIONAL: change the port if you have a conflict
HOST_PORT=3000
AI_SERVICE_FORWARD_PORT=5555

-# Wren UI
EXPERIMENTAL_ENGINE_RUST_VERSION=false

SanShangBoy avatar Feb 13 '25 09:02 SanShangBoy

----------------------------------------error message 2025-02-13 17:01:49 ERROR: Traceback (most recent call last): 2025-02-13 17:01:49 File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan 2025-02-13 17:01:49 async with self.lifespan_context(app) as maybe_state: 2025-02-13 17:01:49 File "/usr/local/lib/python3.12/contextlib.py", line 204, in aenter 2025-02-13 17:01:49 return await anext(self.gen) 2025-02-13 17:01:49 ^^^^^^^^^^^^^^^^^^^^^ 2025-02-13 17:01:49 File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan 2025-02-13 17:01:49 async with original_context(app) as maybe_original_state: 2025-02-13 17:01:49 File "/usr/local/lib/python3.12/contextlib.py", line 204, in aenter 2025-02-13 17:01:49 return await anext(self.gen) 2025-02-13 17:01:49 ^^^^^^^^^^^^^^^^^^^^^ 2025-02-13 17:01:49 File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan 2025-02-13 17:01:49 async with original_context(app) as maybe_original_state: 2025-02-13 17:01:49 File "/usr/local/lib/python3.12/contextlib.py", line 204, in aenter 2025-02-13 17:01:49 return await anext(self.gen) 2025-02-13 17:01:49 ^^^^^^^^^^^^^^^^^^^^^ 2025-02-13 17:01:49 File "/src/main.py", line 32, in lifespan 2025-02-13 17:01:49 app.state.service_container = create_service_container(pipe_components, settings) 2025-02-13 17:01:49 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-02-13 17:01:49 File "/src/globals.py", line 240, in create_service_container 2025-02-13 17:01:49 **pipe_components["sql_pairs_deletion"], 2025-02-13 17:01:49 ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2025-02-13 17:01:49 KeyError: 'sql_pairs_deletion' 2025-02-13 17:01:49 2025-02-13 17:01:49 ERROR: Application startup failed. Exiting.

  • ---------------------------------config.yaml

you should rename this file to config.yaml and put it in ~/.wrenai

please pay attention to the comments starting with # and adjust the config accordingly

type: llm provider: litellm_llm models:

put DEEPSEEK_API_KEY=<your_api_key> in ~/.wrenai/.env

  • api_base: https://api.deepseek.com/v1 api_key_name: DEEPSEEK_API_KEY model: deepseek/deepseek-reasoner timeout: 120 kwargs: n: 1 temperature: 0 response_format: type: text
  • api_base: https://api.deepseek.com/v1 api_key_name: DEEPSEEK_API_KEY model: deepseek/deepseek-chat timeout: 120 kwargs: n: 1 temperature: 0 response_format: type: text
  • api_base: https://api.deepseek.com/v1 api_key_name: DEEPSEEK_API_KEY model: deepseek/deepseek-coder timeout: 120 kwargs: n: 1 temperature: 0 response_format: type: json_object

type: embedder provider: litellm_embedder models:

define OPENAI_API_KEY=<api_key> in ~/.wrenai/.env if you are using openai embedding model

please refer to LiteLLM documentation for more details: https://docs.litellm.ai/docs/providers

  • model: deepseek/deepseek-chat # put your embedding model name here, if it is not openai embedding model, should be /<model_name> api_base: https://api.deepseek.com/v1 # change this according to your embedding model api_key_name: DEEPSEEK_API_KEY timeout: 120

type: engine provider: wren_ui endpoint: http://wren-ui:3000


type: document_store provider: qdrant location: http://qdrant:6333 embedding_model_dim: 3072 # put your embedding model dimension here timeout: 120 recreate_index: true


please change the llm and embedder names to the ones you want to use

the format of llm and embedder should be .<model_name> such as litellm_llm.gpt-4o-2024-08-06

the pipes may be not the latest version, please refer to the latest version: https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/config.example.yaml

type: pipeline pipes:

  • name: db_schema_indexing embedder: litellm_embedder.deepseek/deepseek-chat document_store: qdrant
  • name: historical_question_indexing embedder: litellm_embedder.deepseek/deepseek-chat document_store: qdrant
  • name: table_description_indexing embedder: litellm_embedder.deepseek/deepseek-chat document_store: qdrant
  • name: db_schema_retrieval llm: litellm_llm.deepseek/deepseek-coder embedder: litellm_embedder.deepseek/deepseek-chat document_store: qdrant
  • name: historical_question_retrieval embedder: litellm_embedder.deepseek/deepseek-chat document_store: qdrant
  • name: sql_generation llm: litellm_llm.deepseek/deepseek-coder engine: wren_ui
  • name: sql_correction llm: litellm_llm.deepseek/deepseek-coder engine: wren_ui
  • name: followup_sql_generation llm: litellm_llm.deepseek/deepseek-coder engine: wren_ui
  • name: sql_summary llm: litellm_llm.deepseek/deepseek-coder
  • name: sql_answer llm: litellm_llm.deepseek/deepseek-chat engine: wren_ui
  • name: sql_breakdown llm: litellm_llm.deepseek/deepseek-coder engine: wren_ui
  • name: sql_expansion llm: litellm_llm.deepseek/deepseek-coder engine: wren_ui
  • name: semantics_description llm: litellm_llm.deepseek/deepseek-chat
  • name: relationship_recommendation llm: litellm_llm.deepseek/deepseek-coder engine: wren_ui
  • name: question_recommendation llm: litellm_llm.deepseek/deepseek-coder
  • name: question_recommendation_db_schema_retrieval llm: litellm_llm.deepseek/deepseek-coder embedder: litellm_embedder.deepseek/deepseek-chat document_store: qdrant
  • name: question_recommendation_sql_generation llm: litellm_llm.deepseek/deepseek-coder engine: wren_ui
  • name: chart_generation llm: litellm_llm.deepseek/deepseek-coder
  • name: chart_adjustment llm: litellm_llm.deepseek/deepseek-coder
  • name: intent_classification llm: litellm_llm.deepseek/deepseek-coder embedder: litellm_embedder.deepseek/deepseek-chat document_store: qdrant
  • name: data_assistance llm: litellm_llm.deepseek/deepseek-chat
  • name: sql_pairs_indexing document_store: qdrant embedder: litellm_embedder.deepseek/deepseek-chat
  • name: sql_pairs_retrieval document_store: qdrant embedder: litellm_embedder.deepseek/deepseek-chat llm: litellm_llm.deepseek/deepseek-coder
  • name: preprocess_sql_data llm: litellm_llm.deepseek/deepseek-coder
  • name: sql_executor engine: wren_ui
  • name: sql_question_generation llm: litellm_llm.deepseek/deepseek-coder
  • name: sql_generation_reasoning llm: litellm_llm.deepseek/deepseek-reasoner
  • name: sql_regeneration llm: litellm_llm.deepseek/deepseek-coder engine: wren_ui
  • name: sql_explanation llm: litellm_llm.deepseek/deepseek-coder

settings: column_indexing_batch_size: 50 table_retrieval_size: 10 table_column_retrieval_size: 100 allow_using_db_schemas_without_pruning: false # if you want to use db schemas without pruning, set this to true. It will be faster query_cache_maxsize: 1000 query_cache_ttl: 3600 langfuse_host: https://cloud.langfuse.com langfuse_enable: true logging_level: DEBUG development: true

  • ------------------------------------------.env COMPOSE_PROJECT_NAME=wrenai PLATFORM=linux/amd64

PROJECT_DIR=.

service port

WREN_ENGINE_PORT=8080 WREN_ENGINE_SQL_PORT=7432 WREN_AI_SERVICE_PORT=5555 WREN_UI_PORT=3000 IBIS_SERVER_PORT=8000 WREN_UI_ENDPOINT=http://wren-ui:${WREN_UI_PORT}

ai service settings

QDRANT_HOST=qdrant SHOULD_FORCE_DEPLOY=1

vendor keys

LLM_OPENAI_API_KEY= EMBEDDER_OPENAI_API_KEY= LLM_AZURE_OPENAI_API_KEY= EMBEDDER_AZURE_OPENAI_API_KEY= QDRANT_API_KEY= DEEPSEEK_API_KEY=sk-6bfab333ba954889ba05c6d4ccb9c898

version

CHANGE THIS TO THE LATEST VERSION

WREN_PRODUCT_VERSION=0.15.3 WREN_ENGINE_VERSION=0.13.1 WREN_AI_SERVICE_VERSION=0.15.7 IBIS_SERVER_VERSION=0.13.1 WREN_UI_VERSION=0.20.1 WREN_BOOTSTRAP_VERSION=0.1.5

user id (uuid v4)

USER_UUID=

for other services

POSTHOG_API_KEY=phc_nhF32aj4xHXOZb0oqr2cn4Oy9uiWzz6CCP4KZmRq9aE POSTHOG_HOST=https://app.posthog.com TELEMETRY_ENABLED=true

this is for telemetry to know the model, i think ai-service might be able to provide a endpoint to get the information

GENERATION_MODEL=gpt-4o-mini LANGFUSE_SECRET_KEY= LANGFUSE_PUBLIC_KEY=

the port exposes to the host

OPTIONAL: change the port if you have a conflict

HOST_PORT=3000 AI_SERVICE_FORWARD_PORT=5555

Wren UI

EXPERIMENTAL_ENGINE_RUST_VERSION=false

@SanShangBoy please check this

https://github.com/Canner/WrenAI/blob/main/wren-ai-service/docs/config_examples/README.md

cyyeh avatar Feb 13 '25 09:02 cyyeh

2025-02-13 18:03:44 I0213 10:03:44.406 8 wren-ai-service:368] Using Qdrant Document Store with Embedding Model Dimension: 3072
2025-02-13 18:03:44 ERROR:    Traceback (most recent call last):
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 72, in map_httpcore_exceptions
2025-02-13 18:03:44     yield
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 236, in handle_request
2025-02-13 18:03:44     resp = self._pool.handle_request(req)
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py", line 256, in handle_request
2025-02-13 18:03:44     raise exc from None
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py", line 236, in handle_request
2025-02-13 18:03:44     response = connection.handle_request(
2025-02-13 18:03:44                ^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection.py", line 101, in handle_request
2025-02-13 18:03:44     raise exc
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection.py", line 78, in handle_request
2025-02-13 18:03:44     stream = self._connect(request)
2025-02-13 18:03:44              ^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection.py", line 124, in _connect
2025-02-13 18:03:44     stream = self._network_backend.connect_tcp(**kwargs)
2025-02-13 18:03:44              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpcore/_backends/sync.py", line 207, in connect_tcp
2025-02-13 18:03:44     with map_exceptions(exc_map):
2025-02-13 18:03:44   File "/usr/local/lib/python3.12/contextlib.py", line 155, in __exit__
2025-02-13 18:03:44     self.gen.throw(value)
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
2025-02-13 18:03:44     raise to_exc(exc) from exc
2025-02-13 18:03:44 httpcore.ConnectError: [Errno 111] Connection refused
2025-02-13 18:03:44 
2025-02-13 18:03:44 The above exception was the direct cause of the following exception:
2025-02-13 18:03:44 
2025-02-13 18:03:44 Traceback (most recent call last):
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 116, in send_inner
2025-02-13 18:03:44     response = self._client.send(request)
2025-02-13 18:03:44                ^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpx/_client.py", line 926, in send
2025-02-13 18:03:44     response = self._send_handling_auth(
2025-02-13 18:03:44                ^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpx/_client.py", line 954, in _send_handling_auth
2025-02-13 18:03:44     response = self._send_handling_redirects(
2025-02-13 18:03:44                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpx/_client.py", line 991, in _send_handling_redirects
2025-02-13 18:03:44     response = self._send_single_request(request)
2025-02-13 18:03:44                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1027, in _send_single_request
2025-02-13 18:03:44     response = transport.handle_request(request)
2025-02-13 18:03:44                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 235, in handle_request
2025-02-13 18:03:44     with map_httpcore_exceptions():
2025-02-13 18:03:44   File "/usr/local/lib/python3.12/contextlib.py", line 155, in __exit__
2025-02-13 18:03:44     self.gen.throw(value)
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 89, in map_httpcore_exceptions
2025-02-13 18:03:44     raise mapped_exc(message) from exc
2025-02-13 18:03:44 httpx.ConnectError: [Errno 111] Connection refused
2025-02-13 18:03:44 
2025-02-13 18:03:44 During handling of the above exception, another exception occurred:
2025-02-13 18:03:44 
2025-02-13 18:03:44 Traceback (most recent call last):
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan
2025-02-13 18:03:44     async with self.lifespan_context(app) as maybe_state:
2025-02-13 18:03:44   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-02-13 18:03:44     return await anext(self.gen)
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
2025-02-13 18:03:44     async with original_context(app) as maybe_original_state:
2025-02-13 18:03:44   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-02-13 18:03:44     return await anext(self.gen)
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/src/__main__.py", line 31, in lifespan
2025-02-13 18:03:44     pipe_components = generate_components(settings.components)
2025-02-13 18:03:44                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/src/providers/__init__.py", line 336, in generate_components
2025-02-13 18:03:44     identifier: provider_factory(config)
2025-02-13 18:03:44                 ^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/src/providers/__init__.py", line 16, in provider_factory
2025-02-13 18:03:44     return loader.get_provider(config.get("provider"))(**config)
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/src/providers/document_store/qdrant.py", line 355, in __init__
2025-02-13 18:03:44     self._reset_document_store(recreate_index)
2025-02-13 18:03:44   File "/src/providers/document_store/qdrant.py", line 358, in _reset_document_store
2025-02-13 18:03:44     self.get_store(recreate_index=recreate_index)
2025-02-13 18:03:44   File "/src/providers/document_store/qdrant.py", line 372, in get_store
2025-02-13 18:03:44     return AsyncQdrantDocumentStore(
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/src/providers/document_store/qdrant.py", line 161, in __init__
2025-02-13 18:03:44     self.client.create_payload_index(
2025-02-13 18:03:44     ^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/haystack_integrations/document_stores/qdrant/document_store.py", line 280, in client
2025-02-13 18:03:44     self._set_up_collection(
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/haystack_integrations/document_stores/qdrant/document_store.py", line 857, in _set_up_collection
2025-02-13 18:03:44     if recreate_collection or not self.client.collection_exists(collection_name):
2025-02-13 18:03:44                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/qdrant_client.py", line 2166, in collection_exists
2025-02-13 18:03:44     return self._client.collection_exists(collection_name=collection_name, **kwargs)
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/qdrant_remote.py", line 2594, in collection_exists
2025-02-13 18:03:44     result: Optional[models.CollectionExistence] = self.http.collections_api.collection_exists(
2025-02-13 18:03:44                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api/collections_api.py", line 281, in collection_exists
2025-02-13 18:03:44     return self._build_for_collection_exists(
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api/collections_api.py", line 67, in _build_for_collection_exists
2025-02-13 18:03:44     return self.api_client.request(
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 89, in request
2025-02-13 18:03:44     return self.send(request, type_)
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 106, in send
2025-02-13 18:03:44     response = self.middleware(request, self.send_inner)
2025-02-13 18:03:44                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 215, in __call__
2025-02-13 18:03:44     return call_next(request)
2025-02-13 18:03:44            ^^^^^^^^^^^^^^^^^^
2025-02-13 18:03:44   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 118, in send_inner
2025-02-13 18:03:44     raise ResponseHandlingException(e)
2025-02-13 18:03:44 qdrant_client.http.exceptions.ResponseHandlingException: [Errno 111] Connection refused
2025-02-13 18:03:44 
2025-02-13 18:03:44 ERROR:    Application startup failed. Exiting.

I made the modifications according to the tutorial, but now there is an error message

SanShangBoy avatar Feb 13 '25 10:02 SanShangBoy

config.yaml

# you should rename this file to config.yaml and put it in ~/.wrenai
# please pay attention to the comments starting with # and adjust the config accordingly

type: llm
provider: litellm_llm
models:
# put DEEPSEEK_API_KEY=<your_api_key> in ~/.wrenai/.env
- api_base: https://api.deepseek.com/v1

  model: deepseek/deepseek-chat
  timeout: 120
  kwargs:
    n: 1
    temperature: 0
    response_format:
      type: text


---
type: embedder
provider: litellm_embedder
models:
# define OPENAI_API_KEY=<api_key> in ~/.wrenai/.env if you are using openai embedding model
# please refer to LiteLLM documentation for more details: https://docs.litellm.ai/docs/providers
- model: deepseek/deepseek-chat # put your embedding model name here, if it is not openai embedding model, should be <provider>/<model_name>
  api_base: https://api.deepseek.com/v1  # change this according to your embedding model

  timeout: 120

---
type: engine
provider: wren_ui
endpoint: http://localhost:3000

---
type: engine
provider: wren_ibis
endpoint: http://localhost:8000
source: bigquery
manifest: "" # base64 encoded string of the MDL
connection_info: "" # base64 encoded string of the connection info

---
type: engine
provider: wren_engine
endpoint: http://localhost:8080
manifest: ""

---
type: document_store
provider: qdrant
location: http://localhost:6333
embedding_model_dim: 3072
timeout: 120
recreate_index: false

---
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: table_description_indexing
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: db_schema_retrieval
    llm: litellm_llm.deepseek/deepseek-chat
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: historical_question_retrieval
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: sql_generation
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui
  - name: sql_correction
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui
  - name: followup_sql_generation
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui
  - name: sql_summary
    llm: litellm_llm.deepseek/deepseek-chat
  - name: sql_answer
    llm: litellm_llm.deepseek/deepseek-chat
  - name: sql_breakdown
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui
  - name: sql_expansion
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui
  - name: semantics_description
    llm: litellm_llm.deepseek/deepseek-chat
  - name: relationship_recommendation
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui
  - name: question_recommendation
    llm: litellm_llm.deepseek/deepseek-chat
  - name: question_recommendation_db_schema_retrieval
    llm: litellm_llm.deepseek/deepseek-chat
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: question_recommendation_sql_generation
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui
  - name: chart_generation
    llm: litellm_llm.deepseek/deepseek-chat
  - name: chart_adjustment
    llm: litellm_llm.deepseek/deepseek-chat
  - name: intent_classification
    llm: litellm_llm.deepseek/deepseek-chat
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: data_assistance
    llm: litellm_llm.deepseek/deepseek-chat
  - name: sql_pairs_indexing
    document_store: qdrant
    embedder: litellm_embedder.deepseek/deepseek-chat
  - name: sql_pairs_retrieval
    document_store: qdrant
    embedder: litellm_embedder.deepseek/deepseek-chat
    llm: litellm_llm.deepseek/deepseek-chat
  - name: preprocess_sql_data
    llm: litellm_llm.deepseek/deepseek-chat
  - name: sql_executor
    engine: wren_ui
  - name: sql_question_generation
    llm: litellm_llm.deepseek/deepseek-chat
  - name: sql_generation_reasoning
    llm: litellm_llm.deepseek/deepseek-chat
  - name: sql_regeneration
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui

---
settings:
  host: 127.0.0.1
  port: 5556
  engine_timeout: 30
  column_indexing_batch_size: 50
  table_retrieval_size: 10
  table_column_retrieval_size: 100
  query_cache_maxsize: 1000
  allow_using_db_schemas_without_pruning: false
  query_cache_ttl: 3600
  langfuse_host: https://cloud.langfuse.com
  langfuse_enable: true
  logging_level: INFO
  development: false

SanShangBoy avatar Feb 13 '25 10:02 SanShangBoy

My version is 0.15.3. The default config.yaml file is missing some configurations, such as the ones in pipes:

  - name: sql_pairs_deletion
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: sql_regeneration
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.openai/llama3.2:3b

Below is the full content of my config.yaml. I hope it helps you.

# you should rename this file to config.yaml and put it in ~/.wrenai
# please pay attention to the comments starting with # and adjust the config accordingly

type: llm
provider: litellm_llm
models:
# put OPENAI_API_KEY=<random_string> in ~/.wrenai/.env
- api_base: http://ollama.xxx.vip:11434/v1  # change this to your ollama host, api_base should be <ollama_url>/v1
  model: openai/llama3.2:3b  # openai/<ollama_model_name>
  timeout: 600
  kwargs:
    n: 1
    temperature: 0

---
type: embedder
provider: litellm_embedder
models:
# put OPENAI_API_KEY=<random_string> in ~/.wrenai/.env
- model: openai/nomic-embed-text  # put your ollama embedder model name here, openai/<ollama_model_name>
  api_base: http://ollama.xxx.vip:11434/v1   # change this to your ollama host, api_base should be <ollama_url>/v1
  timeout: 600

---
type: engine
provider: wren_ui
endpoint: http://wren-ui:3000

---
type: document_store
provider: qdrant
location: http://qdrant:6333
embedding_model_dim: 768  # put your embedding model dimension here
timeout: 120
recreate_index: true

---
# please change the llm and embedder names to the ones you want to use
# the format of llm and embedder should be <provider>.<model_name> such as litellm_llm.gpt-4o-2024-08-06
# the pipes may be not the latest version, please refer to the latest version: https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/config.example.yaml
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: sql_pairs_deletion
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: table_description_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: db_schema_retrieval
    llm: litellm_llm.openai/llama3.2:3b
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: historical_question_retrieval
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: sql_generation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_correction
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: followup_sql_generation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_summary
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_answer
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_breakdown
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_expansion
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: semantics_description
    llm: litellm_llm.openai/llama3.2:3b
  - name: relationship_recommendation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: question_recommendation
    llm: litellm_llm.openai/llama3.2:3b
  - name: question_recommendation_db_schema_retrieval
    llm: litellm_llm.openai/llama3.2:3b
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: question_recommendation_sql_generation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: chart_generation
    llm: litellm_llm.openai/llama3.2:3b
  - name: chart_adjustment
    llm: litellm_llm.openai/llama3.2:3b
  - name: intent_classification
    llm: litellm_llm.openai/llama3.2:3b
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: data_assistance
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_pairs_indexing
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text
  - name: sql_pairs_retrieval
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text
    llm: litellm_llm.openai/llama3.2:3b
  - name: preprocess_sql_data
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_executor
    engine: wren_ui
  - name: sql_question_generation
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_generation_reasoning
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_regeneration
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.openai/llama3.2:3b
---
settings:
  column_indexing_batch_size: 50
  table_retrieval_size: 10
  table_column_retrieval_size: 100
  allow_using_db_schemas_without_pruning: false  # if you want to use db schemas without pruning, set this to true. It will be faster
  query_cache_maxsize: 1000
  query_cache_ttl: 3600
  langfuse_host: https://cloud.langfuse.com
  langfuse_enable: true
  logging_level: DEBUG
  development: true

Image

JianGangLi avatar Feb 13 '25 12:02 JianGangLi

I tried to add what you provided, but it still gives the same error message. My launcher is working properly, but the service error message persists

  - name: sql_pairs_deletion
    embedder: litellm_embedder.deepseek/deepseek-chat
    document_store: qdrant
  - name: sql_regeneration
    llm: litellm_llm.deepseek/deepseek-chat
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.deepseek/deepseek-chat
2025-02-14 08:40:48 I0214 00:40:48.093 8 wren-ai-service:368] Using Qdrant Document Store with Embedding Model Dimension: 3072
2025-02-14 08:40:48 ERROR:    Traceback (most recent call last):
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 72, in map_httpcore_exceptions
2025-02-14 08:40:48     yield
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 236, in handle_request
2025-02-14 08:40:48     resp = self._pool.handle_request(req)
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py", line 256, in handle_request
2025-02-14 08:40:48     raise exc from None
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection_pool.py", line 236, in handle_request
2025-02-14 08:40:48     response = connection.handle_request(
2025-02-14 08:40:48                ^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection.py", line 101, in handle_request
2025-02-14 08:40:48     raise exc
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection.py", line 78, in handle_request
2025-02-14 08:40:48     stream = self._connect(request)
2025-02-14 08:40:48              ^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpcore/_sync/connection.py", line 124, in _connect
2025-02-14 08:40:48     stream = self._network_backend.connect_tcp(**kwargs)
2025-02-14 08:40:48              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpcore/_backends/sync.py", line 207, in connect_tcp
2025-02-14 08:40:48     with map_exceptions(exc_map):
2025-02-14 08:40:48   File "/usr/local/lib/python3.12/contextlib.py", line 155, in __exit__
2025-02-14 08:40:48     self.gen.throw(value)
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
2025-02-14 08:40:48     raise to_exc(exc) from exc
2025-02-14 08:40:48 httpcore.ConnectError: [Errno 111] Connection refused
2025-02-14 08:40:48 
2025-02-14 08:40:48 The above exception was the direct cause of the following exception:
2025-02-14 08:40:48 
2025-02-14 08:40:48 Traceback (most recent call last):
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 116, in send_inner
2025-02-14 08:40:48     response = self._client.send(request)
2025-02-14 08:40:48                ^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpx/_client.py", line 926, in send
2025-02-14 08:40:48     response = self._send_handling_auth(
2025-02-14 08:40:48                ^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpx/_client.py", line 954, in _send_handling_auth
2025-02-14 08:40:48     response = self._send_handling_redirects(
2025-02-14 08:40:48                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpx/_client.py", line 991, in _send_handling_redirects
2025-02-14 08:40:48     response = self._send_single_request(request)
2025-02-14 08:40:48                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpx/_client.py", line 1027, in _send_single_request
2025-02-14 08:40:48     response = transport.handle_request(request)
2025-02-14 08:40:48                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 235, in handle_request
2025-02-14 08:40:48     with map_httpcore_exceptions():
2025-02-14 08:40:48   File "/usr/local/lib/python3.12/contextlib.py", line 155, in __exit__
2025-02-14 08:40:48     self.gen.throw(value)
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/httpx/_transports/default.py", line 89, in map_httpcore_exceptions
2025-02-14 08:40:48     raise mapped_exc(message) from exc
2025-02-14 08:40:48 httpx.ConnectError: [Errno 111] Connection refused
2025-02-14 08:40:48 
2025-02-14 08:40:48 During handling of the above exception, another exception occurred:
2025-02-14 08:40:48 
2025-02-14 08:40:48 Traceback (most recent call last):
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan
2025-02-14 08:40:48     async with self.lifespan_context(app) as maybe_state:
2025-02-14 08:40:48   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-02-14 08:40:48     return await anext(self.gen)
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
2025-02-14 08:40:48     async with original_context(app) as maybe_original_state:
2025-02-14 08:40:48   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-02-14 08:40:48     return await anext(self.gen)
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/src/__main__.py", line 31, in lifespan
2025-02-14 08:40:48     pipe_components = generate_components(settings.components)
2025-02-14 08:40:48                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/src/providers/__init__.py", line 336, in generate_components
2025-02-14 08:40:48     identifier: provider_factory(config)
2025-02-14 08:40:48                 ^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/src/providers/__init__.py", line 16, in provider_factory
2025-02-14 08:40:48     return loader.get_provider(config.get("provider"))(**config)
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/src/providers/document_store/qdrant.py", line 355, in __init__
2025-02-14 08:40:48     self._reset_document_store(recreate_index)
2025-02-14 08:40:48   File "/src/providers/document_store/qdrant.py", line 358, in _reset_document_store
2025-02-14 08:40:48     self.get_store(recreate_index=recreate_index)
2025-02-14 08:40:48   File "/src/providers/document_store/qdrant.py", line 372, in get_store
2025-02-14 08:40:48     return AsyncQdrantDocumentStore(
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/src/providers/document_store/qdrant.py", line 161, in __init__
2025-02-14 08:40:48     self.client.create_payload_index(
2025-02-14 08:40:48     ^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/haystack_integrations/document_stores/qdrant/document_store.py", line 280, in client
2025-02-14 08:40:48     self._set_up_collection(
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/haystack_integrations/document_stores/qdrant/document_store.py", line 857, in _set_up_collection
2025-02-14 08:40:48     if recreate_collection or not self.client.collection_exists(collection_name):
2025-02-14 08:40:48                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/qdrant_client.py", line 2166, in collection_exists
2025-02-14 08:40:48     return self._client.collection_exists(collection_name=collection_name, **kwargs)
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/qdrant_remote.py", line 2594, in collection_exists
2025-02-14 08:40:48     result: Optional[models.CollectionExistence] = self.http.collections_api.collection_exists(
2025-02-14 08:40:48                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api/collections_api.py", line 281, in collection_exists
2025-02-14 08:40:48     return self._build_for_collection_exists(
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api/collections_api.py", line 67, in _build_for_collection_exists
2025-02-14 08:40:48     return self.api_client.request(
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 89, in request
2025-02-14 08:40:48     return self.send(request, type_)
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 106, in send
2025-02-14 08:40:48     response = self.middleware(request, self.send_inner)
2025-02-14 08:40:48                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 215, in __call__
2025-02-14 08:40:48     return call_next(request)
2025-02-14 08:40:48            ^^^^^^^^^^^^^^^^^^
2025-02-14 08:40:48   File "/app/.venv/lib/python3.12/site-packages/qdrant_client/http/api_client.py", line 118, in send_inner
2025-02-14 08:40:48     raise ResponseHandlingException(e)
2025-02-14 08:40:48 qdrant_client.http.exceptions.ResponseHandlingException: [Errno 111] Connection refused
2025-02-14 08:40:48 
2025-02-14 08:40:48 ERROR:    Application startup failed. Exiting.

SanShangBoy avatar Feb 14 '25 00:02 SanShangBoy

@SanShangBoy deepseek的API已经停止充值了,所以我用到是SiliconFlow的API, 我使用的时候发现如果你用的是类似于openai的api,那么你的.env里直接用OPENAI_API_KEY=xxxx。我不知道为什么这个前面需要加openai/,但是我这样成功了。

type: llm
provider: litellm_llm
timeout: 120
models:
- model: openai/Qwen/Qwen2.5-32B-Instruct
  api_base: https://api.siliconflow.cn/v1
  kwargs:
    temperature: 0
    n: 1
    # for better consistency of llm response, refer: https://platform.openai.com/docs/api-reference/chat/create#chat-create-seed
    seed: 0
    max_tokens: 4096

Image

JianGangLi avatar Feb 14 '25 03:02 JianGangLi

我的env改成OPENAI_API_KEY=xxx,config.yaml也加了openai/,还是提示连接被拒绝,我觉得应该不是这个原因 我修改为openai的api试试

type: llm
provider: litellm_llm
models:
# put DEEPSEEK_API_KEY=<your_api_key> in ~/.wrenai/.env
- api_base: https://api.deepseek.com/v1
  model: openai/deepseek/deepseek-chat
  timeout: 120
  kwargs:
    n: 1
    temperature: 0
    response_format:
      type: text

SanShangBoy avatar Feb 14 '25 06:02 SanShangBoy

我的env改成OPENAI_API_KEY=xxx,config.yaml也加了openai/,还是提示连接被拒绝,我觉得应该不是这个原因 我修改为openai的api试试

type: llm
provider: litellm_llm
models:
# put DEEPSEEK_API_KEY=<your_api_key> in ~/.wrenai/.env
- api_base: https://api.deepseek.com/v1
  model: openai/deepseek/deepseek-chat
  timeout: 120
  kwargs:
    n: 1
    temperature: 0
    response_format:
      type: text

the location of engine provider wren_ui and document store qdrant are wrong. could you check https://github.com/Canner/WrenAI/blob/main/wren-ai-service/docs/config_examples/config.deepseek.yaml

cyyeh avatar Feb 14 '25 07:02 cyyeh

老哥可以跑起来吗

wuhq7 avatar Feb 15 '25 06:02 wuhq7

My version is 0.15.3. The default config.yaml file is missing some configurations, such as the ones in pipes:

  • name: sql_pairs_deletion embedder: litellm_embedder.openai/nomic-embed-text document_store: qdrant
  • name: sql_regeneration llm: litellm_llm.openai/llama3.2:3b engine: wren_ui
  • name: sql_explanation llm: litellm_llm.openai/llama3.2:3b Below is the full content of my config.yaml. I hope it helps you.
# you should rename this file to config.yaml and put it in ~/.wrenai
# please pay attention to the comments starting with # and adjust the config accordingly

type: llm
provider: litellm_llm
models:
# put OPENAI_API_KEY=<random_string> in ~/.wrenai/.env
- api_base: http://ollama.xxx.vip:11434/v1  # change this to your ollama host, api_base should be <ollama_url>/v1
  model: openai/llama3.2:3b  # openai/<ollama_model_name>
  timeout: 600
  kwargs:
    n: 1
    temperature: 0

---
type: embedder
provider: litellm_embedder
models:
# put OPENAI_API_KEY=<random_string> in ~/.wrenai/.env
- model: openai/nomic-embed-text  # put your ollama embedder model name here, openai/<ollama_model_name>
  api_base: http://ollama.xxx.vip:11434/v1   # change this to your ollama host, api_base should be <ollama_url>/v1
  timeout: 600

---
type: engine
provider: wren_ui
endpoint: http://wren-ui:3000

---
type: document_store
provider: qdrant
location: http://qdrant:6333
embedding_model_dim: 768  # put your embedding model dimension here
timeout: 120
recreate_index: true

---
# please change the llm and embedder names to the ones you want to use
# the format of llm and embedder should be <provider>.<model_name> such as litellm_llm.gpt-4o-2024-08-06
# the pipes may be not the latest version, please refer to the latest version: https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/config.example.yaml
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: sql_pairs_deletion
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: table_description_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: db_schema_retrieval
    llm: litellm_llm.openai/llama3.2:3b
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: historical_question_retrieval
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: sql_generation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_correction
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: followup_sql_generation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_summary
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_answer
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_breakdown
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_expansion
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: semantics_description
    llm: litellm_llm.openai/llama3.2:3b
  - name: relationship_recommendation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: question_recommendation
    llm: litellm_llm.openai/llama3.2:3b
  - name: question_recommendation_db_schema_retrieval
    llm: litellm_llm.openai/llama3.2:3b
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: question_recommendation_sql_generation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: chart_generation
    llm: litellm_llm.openai/llama3.2:3b
  - name: chart_adjustment
    llm: litellm_llm.openai/llama3.2:3b
  - name: intent_classification
    llm: litellm_llm.openai/llama3.2:3b
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: data_assistance
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_pairs_indexing
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text
  - name: sql_pairs_retrieval
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text
    llm: litellm_llm.openai/llama3.2:3b
  - name: preprocess_sql_data
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_executor
    engine: wren_ui
  - name: sql_question_generation
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_generation_reasoning
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_regeneration
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.openai/llama3.2:3b
---
settings:
  column_indexing_batch_size: 50
  table_retrieval_size: 10
  table_column_retrieval_size: 100
  allow_using_db_schemas_without_pruning: false  # if you want to use db schemas without pruning, set this to true. It will be faster
  query_cache_maxsize: 1000
  query_cache_ttl: 3600
  langfuse_host: https://cloud.langfuse.com
  langfuse_enable: true
  logging_level: DEBUG
  development: true

Image

My version is 0.15.3. The default config.yaml file is missing some configurations, such as the ones in pipes:

  • name: sql_pairs_deletion embedder: litellm_embedder.openai/nomic-embed-text document_store: qdrant
  • name: sql_regeneration llm: litellm_llm.openai/llama3.2:3b engine: wren_ui
  • name: sql_explanation llm: litellm_llm.openai/llama3.2:3b Below is the full content of my config.yaml. I hope it helps you.
# you should rename this file to config.yaml and put it in ~/.wrenai
# please pay attention to the comments starting with # and adjust the config accordingly

type: llm
provider: litellm_llm
models:
# put OPENAI_API_KEY=<random_string> in ~/.wrenai/.env
- api_base: http://ollama.xxx.vip:11434/v1  # change this to your ollama host, api_base should be <ollama_url>/v1
  model: openai/llama3.2:3b  # openai/<ollama_model_name>
  timeout: 600
  kwargs:
    n: 1
    temperature: 0

---
type: embedder
provider: litellm_embedder
models:
# put OPENAI_API_KEY=<random_string> in ~/.wrenai/.env
- model: openai/nomic-embed-text  # put your ollama embedder model name here, openai/<ollama_model_name>
  api_base: http://ollama.xxx.vip:11434/v1   # change this to your ollama host, api_base should be <ollama_url>/v1
  timeout: 600

---
type: engine
provider: wren_ui
endpoint: http://wren-ui:3000

---
type: document_store
provider: qdrant
location: http://qdrant:6333
embedding_model_dim: 768  # put your embedding model dimension here
timeout: 120
recreate_index: true

---
# please change the llm and embedder names to the ones you want to use
# the format of llm and embedder should be <provider>.<model_name> such as litellm_llm.gpt-4o-2024-08-06
# the pipes may be not the latest version, please refer to the latest version: https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/config.example.yaml
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: sql_pairs_deletion
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: table_description_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: db_schema_retrieval
    llm: litellm_llm.openai/llama3.2:3b
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: historical_question_retrieval
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: sql_generation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_correction
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: followup_sql_generation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_summary
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_answer
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_breakdown
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_expansion
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: semantics_description
    llm: litellm_llm.openai/llama3.2:3b
  - name: relationship_recommendation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: question_recommendation
    llm: litellm_llm.openai/llama3.2:3b
  - name: question_recommendation_db_schema_retrieval
    llm: litellm_llm.openai/llama3.2:3b
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: question_recommendation_sql_generation
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: chart_generation
    llm: litellm_llm.openai/llama3.2:3b
  - name: chart_adjustment
    llm: litellm_llm.openai/llama3.2:3b
  - name: intent_classification
    llm: litellm_llm.openai/llama3.2:3b
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: data_assistance
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_pairs_indexing
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text
  - name: sql_pairs_retrieval
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text
    llm: litellm_llm.openai/llama3.2:3b
  - name: preprocess_sql_data
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_executor
    engine: wren_ui
  - name: sql_question_generation
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_generation_reasoning
    llm: litellm_llm.openai/llama3.2:3b
  - name: sql_regeneration
    llm: litellm_llm.openai/llama3.2:3b
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.openai/llama3.2:3b
---
settings:
  column_indexing_batch_size: 50
  table_retrieval_size: 10
  table_column_retrieval_size: 100
  allow_using_db_schemas_without_pruning: false  # if you want to use db schemas without pruning, set this to true. It will be faster
  query_cache_maxsize: 1000
  query_cache_ttl: 3600
  langfuse_host: https://cloud.langfuse.com
  langfuse_enable: true
  logging_level: DEBUG
  development: true

Image

老哥 你用的是llama3.2这个吗 api-base自己要去怎么获取 还是自己搭建的? 用这个.env要额外配置什么吗

wuhq7 avatar Feb 15 '25 06:02 wuhq7

跑不起来,老老实实用open ai

SanShangBoy avatar Feb 17 '25 07:02 SanShangBoy

我说说我遇到的几个坑吧。 一、首先遇到

2025-02-13 17:01:49   File "/src/globals.py", line 240, in create_service_container
2025-02-13 17:01:49     **pipe_components["sql_pairs_deletion"],
2025-02-13 17:01:49       ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
2025-02-13 17:01:49 KeyError: 'sql_pairs_deletion'

解决办法: 1、下载配置文件(链接中替换版本号,最新版本0.15.3):https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/config.example.yaml 2、也可以往配置文件config.yaml中的pipeline追加

  - name: sql_pairs_deletion
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text

二、如果你用大模型是deepseek,但提示openai鉴权失败,很大可能是embedder没配置好(我是用ollama自搭建embedder),注意几点。 1、必须指明api_key_name: EMBEDDER_OLLAMA_API_KEY 2、模型名称必须以“/”分隔/<model_name> 3、.env文件需要设置EMBEDDER_OLLAMA_API_KEY=123456 , 随便写反正用不上,但是必须要有 4、下面pipeline的配置凡是涉及到litellm_embedder的,按第2点中的要求设置。 5、api_base需要追加/v1 我的参考:

type: embedder
provider: litellm_embedder
models:
# define OPENAI_API_KEY=<api_key> in ~/.wrenai/.env if you are using openai embedding model
# please refer to LiteLLM documentation for more details: https://docs.litellm.ai/docs/providers
- model: openai/nomic-embed-text  # put your embedding model name here, if it is not openai embedding model, should be <provider>/<model_name>
  api_base: http://192.168.3.42:11434/v1  # change this according to your embedding model
  api_key_name: EMBEDDER_OLLAMA_API_KEY
  timeout: 120
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant

# 按第2点要求填写模型名称,下方省略

最后,我暂时还没完全跑起来,我估计是deepseek服务总是出错,不过我已经可以构建数据库结构(modeling功能)了。

Image

wuhuanyan avatar Feb 17 '25 08:02 wuhuanyan

我说说我遇到的几个坑吧。 一、首先遇到

2025-02-13 17:01:49 File "/src/globals.py", line 240, in create_service_container 2025-02-13 17:01:49 **pipe_components["sql_pairs_deletion"], 2025-02-13 17:01:49 ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2025-02-13 17:01:49 KeyError: 'sql_pairs_deletion' 解决办法: 1、下载配置文件(链接中替换版本号,最新版本0.15.3):https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/config.example.yaml 2、也可以往配置文件config.yaml中的pipeline追加

  - name: sql_pairs_deletion
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text

二、如果你用大模型是deepseek,但提示openai鉴权失败,很大可能是embedder没配置好(我是用ollama自搭建embedder),注意几点。 1、必须指明api_key_name: EMBEDDER_OLLAMA_API_KEY 2、模型名称必须以“/”分隔/<model_name> 3、.env文件需要设置EMBEDDER_OLLAMA_API_KEY=123456 , 随便写反正用不上,但是必须要有 4、下面pipeline的配置凡是涉及到litellm_embedder的,按第2点中的要求设置。 5、api_base需要追加/v1 我的参考:

type: embedder
provider: litellm_embedder
models:
# define OPENAI_API_KEY=<api_key> in ~/.wrenai/.env if you are using openai embedding model
# please refer to LiteLLM documentation for more details: https://docs.litellm.ai/docs/providers
- model: openai/nomic-embed-text  # put your embedding model name here, if it is not openai embedding model, should be <provider>/<model_name>
  api_base: http://192.168.3.42:11434/v1  # change this according to your embedding model
  api_key_name: EMBEDDER_OLLAMA_API_KEY
  timeout: 120
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant

# 按第2点要求填写模型名称,下方省略

最后,我暂时还没完全跑起来,我估计是deepseek服务总是出错,不过我已经可以构建数据库结构(modeling功能)了。

Image

我自己用ollama搭建了 deepseek:70b。想请问llm那里也是这样配?自己搭建的也要openai/deepseek-r1:70b这样用吗?太weird了-_-

tatuke avatar Feb 17 '25 09:02 tatuke

我说说我遇到的几个坑吧。 一、首先遇到 2025-02-13 17:01:49 File "/src/globals.py", line 240, in create_service_container 2025-02-13 17:01:49 **pipe_components["sql_pairs_deletion"], 2025-02-13 17:01:49 ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ 2025-02-13 17:01:49 KeyError: 'sql_pairs_deletion' 解决办法: 1、下载配置文件(链接中替换版本号,最新版本0.15.3):https://raw.githubusercontent.com/canner/WrenAI/<WRENAI_VERSION_NUMBER>/docker/config.example.yaml 2、也可以往配置文件config.yaml中的pipeline追加

  - name: sql_pairs_deletion
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text

二、如果你用大模型是deepseek,但提示openai鉴权失败,很大可能是embedder没配置好(我是用ollama自搭建embedder),注意几点。 1、必须指明api_key_name: EMBEDDER_OLLAMA_API_KEY 2、模型名称必须以“/”分隔/<model_name> 3、.env文件需要设置EMBEDDER_OLLAMA_API_KEY=123456 , 随便写反正用不上,但是必须要有 4、下面pipeline的配置凡是涉及到litellm_embedder的,按第2点中的要求设置。 5、api_base需要追加/v1 我的参考:

type: embedder
provider: litellm_embedder
models:
# define OPENAI_API_KEY=<api_key> in ~/.wrenai/.env if you are using openai embedding model
# please refer to LiteLLM documentation for more details: https://docs.litellm.ai/docs/providers
- model: openai/nomic-embed-text  # put your embedding model name here, if it is not openai embedding model, should be <provider>/<model_name>
  api_base: http://192.168.3.42:11434/v1  # change this according to your embedding model
  api_key_name: EMBEDDER_OLLAMA_API_KEY
  timeout: 120
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_embedder.openai/nomic-embed-text
    document_store: qdrant

# 按第2点要求填写模型名称,下方省略

最后,我暂时还没完全跑起来,我估计是deepseek服务总是出错,不过我已经可以构建数据库结构(modeling功能)了。 Image

我自己用ollama搭建了 deepseek:70b。想请问llm那里也是这样配?自己搭建的也要openai/deepseek-r1:70b这样用吗?太weird了-_-

如果你是用ollama,我建議這樣配置,openai前綴只是表示使用openai compatible api,請參考litellm api文件:https://docs.litellm.ai/docs/providers/openai_compatible

cyyeh avatar Feb 17 '25 09:02 cyyeh

跑不起来,老老实实用open ai

可以加一下vx,讨论一下wrenai配置吗,我即使使用openai请求也超时 vx:Gulliym

15906106514 avatar Feb 18 '25 05:02 15906106514

@cyyeh 感谢,感觉之前还是格式搞错了,不过我现在又遇到了 ` b'{"status":{"error":"Wrong input: Vector dimension error: expected dim: 3072, got 1024"},"time":0.011742224}'

Oh no an error! Need help with Hamilton? Join our slack and ask for help! https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g ` 我猜测可能是embedding&vector错误?我正在寻找看看有什么方案。

tatuke avatar Feb 18 '25 10:02 tatuke

@cyyeh 感谢,感觉之前还是格式搞错了,不过我现在又遇到了

b'{"status":{"error":"Wrong input: Vector dimension error: expected dim: 3072, got 1024"},"time":0.011742224}' Oh no an error! Need help with Hamilton? Join our slack and ask for help! https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g 我猜测可能是embedding&vector错误?我正在寻找看看有什么方案。

我寻找到的解决方案是,原始配置config.yaml文件中 type: document_store provider: qdrant location: http://qdrant:6333 embedding_model_dim: 3072 timeout: 120 recreate_index: true

embedding_model_dim 配置的维度超过了我的embedding model 的最大维度(1024)? 将其改为 embedding_model_dim: 1024 即可 我本地部署的大模型不能满足url要求(api_base should be <ollama_url>/v1),所以我采用了aliyun 的api

还是遇到问题

  File "/src/pipelines/retrieval/retrieval.py", line 314, in construct_retrieval_results
    reformated_json[table["table_name"]] = table["table_contents"]
                                           ~~~~~^^^^^^^^^^^^^^^^^^
KeyError: 'table_contents'

tatuke avatar Feb 18 '25 10:02 tatuke

@cyyeh 感谢,感觉之前还是格式搞错了,不过我现在又遇到了

b'{"status":{"error":"Wrong input: Vector dimension error: expected dim: 3072, got 1024"},"time":0.011742224}' Oh no an error! Need help with Hamilton? Join our slack and ask for help! https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g 我猜测可能是embedding&vector错误?我正在寻找看看有什么方案。

我寻找到的解决方案是,原始配置config.yaml文件中 type: document_store provider: qdrant location: http://qdrant:6333 embedding_model_dim: 3072 timeout: 120 recreate_index: true

embedding_model_dim 配置的维度超过了我的embedding model 的最大维度(1024)? 将其改为 embedding_model_dim: 1024 即可 我本地部署的大模型不能满足url要求(api_base should be <ollama_url>/v1),所以我采用了aliyun 的api

还是遇到问题

  File "/src/pipelines/retrieval/retrieval.py", line 314, in construct_retrieval_results
    reformated_json[table["table_name"]] = table["table_contents"]
                                           ~~~~~^^^^^^^^^^^^^^^^^^
KeyError: 'table_contents'

請給我wren-ai-service版本

cyyeh avatar Feb 18 '25 11:02 cyyeh

@cyyeh 感谢,感觉之前还是格式搞错了,不过我现在又遇到了

b'{"status":{"error":"Wrong input: Vector dimension error: expected dim: 3072, got 1024"},"time":0.011742224}' Oh no an error! Need help with Hamilton? Join our slack and ask for help! https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g 我猜测可能是embedding&vector错误?我正在寻找看看有什么方案。

我寻找到的解决方案是,原始配置config.yaml文件中 type: document_store provider: qdrant location: http://qdrant:6333 embedding_model_dim: 3072 timeout: 120 recreate_index: true embedding_model_dim 配置的维度超过了我的embedding model 的最大维度(1024)? 将其改为 embedding_model_dim: 1024 即可 我本地部署的大模型不能满足url要求(api_base should be <ollama_url>/v1),所以我采用了aliyun 的api 还是遇到问题

  File "/src/pipelines/retrieval/retrieval.py", line 314, in construct_retrieval_results
    reformated_json[table["table_name"]] = table["table_contents"]
                                           ~~~~~^^^^^^^^^^^^^^^^^^
KeyError: 'table_contents'

請給我wren-ai-service版本

我使用docker-compose 方式启动,wren-ai-service 的image 版本是 0.15.7

tatuke avatar Feb 18 '25 14:02 tatuke

跑不起来,老老实实用open ai

可以加一下vx,讨论一下wrenai配置吗,我即使使用openai请求也超时 vx:Gulliym

有能跑通的方式吗,hxdm

wuhq7 avatar Feb 20 '25 02:02 wuhq7

@SanShangBoy deepseek的API已经停止充值了,所以我用到是SiliconFlow的API, 我使用的时候发现如果你用的是类似于openai的api,那么你的.env里直接用OPENAI_API_KEY=xxxx。我不知道为什么这个前面需要加openai/,但是我这样成功了。

type: llm
provider: litellm_llm
timeout: 120
models:
- model: openai/Qwen/Qwen2.5-32B-Instruct
  api_base: https://api.siliconflow.cn/v1
  kwargs:
    temperature: 0
    n: 1
    # for better consistency of llm response, refer: https://platform.openai.com/docs/api-reference/chat/create#chat-create-seed
    seed: 0
    max_tokens: 4096

Image

你好,我也用Qwen这个大模型验证WrenAI,但是 Wren AI 不支持Qwen,Haystack也不支持Qwen,请问你是如何操作的?

wmrenr avatar Feb 24 '25 09:02 wmrenr

Image 能启动起来,还是报错

Hirro029 avatar Feb 25 '25 05:02 Hirro029

@tatuke 问题解决了吗,我这边也遇到 table_contents

lsky-walt avatar Feb 25 '25 12:02 lsky-walt

是不是必须使用litellm支持列表中的llm模型? 我们拉个群讨论? vx: tidoka

jonathanyb avatar Mar 06 '25 04:03 jonathanyb

@tatuke 问题解决了吗,我这边也遇到 table_contents

这个KeyError似乎是接受大模型返回的json或者其他消息格式解析时发生的错误,我在玩LLMops时也遇到了。解析格式只兼容openai的返回的格式的话会遇到这个错误。但这只是猜测,目前我还没有花时间去研究这个项目的这部分代码,只能先放一边。你可以关注下社区里有没有其他的解决方案。或者加入作者的Discord group 可能能得到更及时的回答。

tatuke avatar Mar 09 '25 16:03 tatuke