Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to run using Deepseek configuration,My version is 0.15.3 #1296

Open
SanShangBoy opened this issue Feb 13, 2025 · 21 comments
Open

Unable to run using Deepseek configuration,My version is 0.15.3 #1296

SanShangBoy opened this issue Feb 13, 2025 · 21 comments
Labels
bug Something isn't working

Comments

@SanShangBoy
Copy link

SanShangBoy commented Feb 13, 2025

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 SanShangBoy added the bug Something isn't working label Feb 13, 2025
@cyyeh
Copy link
Member

cyyeh commented Feb 13, 2025

----------------------------------------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

@SanShangBoy
Copy link
Author

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
Copy link
Author

SanShangBoy commented Feb 13, 2025

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

@JianGangLi
Copy link

JianGangLi commented Feb 13, 2025

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

@SanShangBoy
Copy link
Author

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.

@JianGangLi
Copy link

JianGangLi commented Feb 14, 2025

@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

@SanShangBoy
Copy link
Author

SanShangBoy commented Feb 14, 2025

我的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

@cyyeh
Copy link
Member

cyyeh commented Feb 14, 2025

我的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

@wuhq7
Copy link

wuhq7 commented Feb 15, 2025

老哥可以跑起来吗

@wuhq7
Copy link

wuhq7 commented Feb 15, 2025

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要额外配置什么吗

@SanShangBoy
Copy link
Author

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

@wuhuanyan
Copy link

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

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

@tatuke
Copy link

tatuke commented Feb 17, 2025

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

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了-_-

@cyyeh
Copy link
Member

cyyeh commented Feb 17, 2025

我说说我遇到的几个坑吧。 一、首先遇到
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

@15906106514
Copy link

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

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

@tatuke
Copy link

tatuke commented Feb 18, 2025

@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
Copy link

tatuke commented Feb 18, 2025

@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'

@cyyeh
Copy link
Member

cyyeh commented Feb 18, 2025

@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版本

@tatuke
Copy link

tatuke commented Feb 18, 2025

@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

@wuhq7
Copy link

wuhq7 commented Feb 20, 2025

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

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

有能跑通的方式吗,hxdm

@wmrenr
Copy link

wmrenr commented Feb 24, 2025

@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,请问你是如何操作的?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

8 participants