WrenAI icon indicating copy to clipboard operation
WrenAI copied to clipboard

Can't start wren-ai-service for a qdrant interaction error

Open nemesisq3a opened this issue 11 months ago • 43 comments

Describe the bug Unable to start wren-ai-service from docker compose startup

To Reproduce Download docker-compose.yaml, .env and config.yaml examples from https://github.com/Canner/WrenAI/tree/main/docker and configure them to use a ollama embedded LLM (self-hosted). I'm using a docker image of ollama running on a network machine with the Qwen2.5-coder LLM loaded.

Expected behavior wren-ai-service positive startup

Desktop (please complete the following information):

  • OS: [Ubuntu Server 22.04 LTS]
  • Docker manually installed (no Docker Desktop)

Wren AI Information

  • Version: 0.14.0
  • LLM_PROVIDER= # ollama_embedder
  • GENERATION_MODEL= # Qwen2.5-coder:7b

Additional context ERROR LOG:

wrenai-wren-ai-service-1  | INFO:     Started server process [8]
wrenai-wren-ai-service-1  | INFO:     Waiting for application startup.
wrenai-wren-ai-service-1  | I0115 21:43:39.189 8 wren-ai-service:42] Imported Provider: src.providers.document_store
wrenai-wren-ai-service-1  | I0115 21:43:39.460 8 wren-ai-service:66] Registering provider: openai_embedder
wrenai-wren-ai-service-1  | I0115 21:43:39.460 8 wren-ai-service:66] Registering provider: qdrant
wrenai-wren-ai-service-1  | I0115 21:43:39.460 8 wren-ai-service:42] Imported Provider: src.providers.document_store.qdrant
wrenai-wren-ai-service-1  | I0115 21:43:39.460 8 wren-ai-service:42] Imported Provider: src.providers.embedder
wrenai-wren-ai-service-1  | I0115 21:43:39.461 8 wren-ai-service:66] Registering provider: azure_openai_embedder
wrenai-wren-ai-service-1  | I0115 21:43:39.461 8 wren-ai-service:42] Imported Provider: src.providers.embedder.azure_openai
wrenai-wren-ai-service-1  | I0115 21:43:39.462 8 wren-ai-service:66] Registering provider: ollama_embedder
wrenai-wren-ai-service-1  | I0115 21:43:39.462 8 wren-ai-service:42] Imported Provider: src.providers.embedder.ollama
wrenai-wren-ai-service-1  | I0115 21:43:39.462 8 wren-ai-service:42] Imported Provider: src.providers.embedder.openai
wrenai-wren-ai-service-1  | I0115 21:43:39.462 8 wren-ai-service:42] Imported Provider: src.providers.engine
wrenai-wren-ai-service-1  | I0115 21:43:39.462 8 wren-ai-service:66] Registering provider: wren_ui
wrenai-wren-ai-service-1  | I0115 21:43:39.462 8 wren-ai-service:66] Registering provider: wren_ibis
wrenai-wren-ai-service-1  | I0115 21:43:39.463 8 wren-ai-service:66] Registering provider: wren_engine
wrenai-wren-ai-service-1  | I0115 21:43:39.463 8 wren-ai-service:42] Imported Provider: src.providers.engine.wren
wrenai-wren-ai-service-1  | I0115 21:43:39.463 8 wren-ai-service:42] Imported Provider: src.providers.llm
wrenai-wren-ai-service-1  | I0115 21:43:39.468 8 wren-ai-service:66] Registering provider: azure_openai_llm
wrenai-wren-ai-service-1  | I0115 21:43:39.468 8 wren-ai-service:42] Imported Provider: src.providers.llm.azure_openai
wrenai-wren-ai-service-1  | /app/.venv/lib/python3.12/site-packages/pydantic/_internal/_config.py:345: UserWarning: Valid config keys have changed in V2:
wrenai-wren-ai-service-1  | * 'fields' has been removed
wrenai-wren-ai-service-1  |   warnings.warn(message, UserWarning)
wrenai-wren-ai-service-1  | I0115 21:43:40.139 8 wren-ai-service:66] Registering provider: litellm_llm
wrenai-wren-ai-service-1  | I0115 21:43:40.139 8 wren-ai-service:42] Imported Provider: src.providers.llm.litellm
wrenai-wren-ai-service-1  | I0115 21:43:40.141 8 wren-ai-service:66] Registering provider: ollama_llm
wrenai-wren-ai-service-1  | I0115 21:43:40.141 8 wren-ai-service:42] Imported Provider: src.providers.llm.ollama
wrenai-wren-ai-service-1  | I0115 21:43:40.176 8 wren-ai-service:66] Registering provider: openai_llm
wrenai-wren-ai-service-1  | I0115 21:43:40.176 8 wren-ai-service:42] Imported Provider: src.providers.llm.openai
wrenai-wren-ai-service-1  | I0115 21:43:40.176 8 wren-ai-service:42] Imported Provider: src.providers.loader
wrenai-wren-ai-service-1  | I0115 21:43:40.177 8 wren-ai-service:18] initializing provider: ollama_embedder
wrenai-wren-ai-service-1  | I0115 21:43:40.177 8 wren-ai-service:93] Getting provider: ollama_embedder from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:118] Ollama model qwen2.5-coder:7b already exists
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:180] Using Ollama Embedding Model: qwen2.5-coder:7b
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:181] Using Ollama URL: http://192.168.200.111:11434
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:18] initializing provider: litellm_llm
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:93] Getting provider: litellm_llm from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:18] initializing provider: litellm_llm
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:93] Getting provider: litellm_llm from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:18] initializing provider: qdrant
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:93] Getting provider: qdrant from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 768
wrenai-qdrant-1           | 2025-01-15T21:43:40.231810Z  INFO actix_web::middleware::logger: 172.20.0.4 "GET /collections/Document/exists HTTP/1.1" 200 57 "-" "python-httpx/0.27.2" 0.000223    
wrenai-qdrant-1           | 2025-01-15T21:43:40.233073Z  INFO storage::content_manager::toc::collection_meta_ops: Deleting collection Document    
wrenai-qdrant-1           | 2025-01-15T21:43:40.236175Z  INFO actix_web::middleware::logger: 172.20.0.4 "DELETE /collections/Document HTTP/1.1" 200 54 "-" "python-httpx/0.27.2" 0.003125    
wrenai-qdrant-1           | 2025-01-15T21:43:40.238040Z  INFO storage::content_manager::toc::collection_meta_ops: Creating collection Document    
wrenai-qdrant-1           | 2025-01-15T21:43:40.286497Z  INFO actix_web::middleware::logger: 172.20.0.4 "PUT /collections/Document HTTP/1.1" 200 52 "-" "python-httpx/0.27.2" 0.048509    
wrenai-qdrant-1           | 2025-01-15T21:43:40.306545Z  INFO actix_web::middleware::logger: 172.20.0.4 "PUT /collections/Document/index?wait=true HTTP/1.1" 200 72 "-" "python-httpx/0.27.2" 0.019139    
wrenai-wren-ai-service-1  | I0115 21:43:40.307 8 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 768
wrenai-qdrant-1           | 2025-01-15T21:43:40.341330Z  INFO actix_web::middleware::logger: 172.20.0.4 "GET /collections/table_descriptions/exists HTTP/1.1" 200 56 "-" "python-httpx/0.27.2" 0.000173    
wrenai-qdrant-1           | 2025-01-15T21:43:40.341859Z  INFO storage::content_manager::toc::collection_meta_ops: Deleting collection table_descriptions    
wrenai-qdrant-1           | 2025-01-15T21:43:40.345164Z  INFO actix_web::middleware::logger: 172.20.0.4 "DELETE /collections/table_descriptions HTTP/1.1" 200 53 "-" "python-httpx/0.27.2" 0.003324    
wrenai-qdrant-1           | 2025-01-15T21:43:40.345903Z  INFO storage::content_manager::toc::collection_meta_ops: Creating collection table_descriptions    
wrenai-qdrant-1           | 2025-01-15T21:43:40.392021Z  INFO actix_web::middleware::logger: 172.20.0.4 "PUT /collections/table_descriptions HTTP/1.1" 200 54 "-" "python-httpx/0.27.2" 0.046174    
wrenai-qdrant-1           | 2025-01-15T21:43:40.414087Z  INFO actix_web::middleware::logger: 172.20.0.4 "PUT /collections/table_descriptions/index?wait=true HTTP/1.1" 200 72 "-" "python-httpx/0.27.2" 0.021094    
wrenai-wren-ai-service-1  | I0115 21:43:40.415 8 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 768
wrenai-qdrant-1           | 2025-01-15T21:43:40.449300Z  INFO actix_web::middleware::logger: 172.20.0.4 "GET /collections/view_questions/exists HTTP/1.1" 200 58 "-" "python-httpx/0.27.2" 0.000162    
wrenai-qdrant-1           | 2025-01-15T21:43:40.449824Z  INFO storage::content_manager::toc::collection_meta_ops: Deleting collection view_questions    
wrenai-qdrant-1           | 2025-01-15T21:43:40.453089Z  INFO actix_web::middleware::logger: 172.20.0.4 "DELETE /collections/view_questions HTTP/1.1" 200 54 "-" "python-httpx/0.27.2" 0.003286    
wrenai-qdrant-1           | 2025-01-15T21:43:40.453791Z  INFO storage::content_manager::toc::collection_meta_ops: Creating collection view_questions    
wrenai-qdrant-1           | 2025-01-15T21:43:40.499653Z  INFO actix_web::middleware::logger: 172.20.0.4 "PUT /collections/view_questions HTTP/1.1" 200 54 "-" "python-httpx/0.27.2" 0.045910    
wrenai-qdrant-1           | 2025-01-15T21:43:40.521487Z  INFO actix_web::middleware::logger: 172.20.0.4 "PUT /collections/view_questions/index?wait=true HTTP/1.1" 200 72 "-" "python-httpx/0.27.2" 0.020818    
wrenai-wren-ai-service-1  | I0115 21:43:40.522 8 wren-ai-service:18] initializing provider: wren_ui
wrenai-wren-ai-service-1  | I0115 21:43:40.522 8 wren-ai-service:93] Getting provider: wren_ui from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}
wrenai-wren-ai-service-1  | I0115 21:43:40.522 8 wren-ai-service:24] Using Engine: wren_ui
wrenai-wren-ai-service-1  | I0115 21:43:40.528 8 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 768
wrenai-qdrant-1           | 2025-01-15T21:43:40.568094Z  INFO actix_web::middleware::logger: 172.20.0.4 "GET /collections/Document/exists HTTP/1.1" 200 58 "-" "python-httpx/0.27.2" 0.000186    
wrenai-qdrant-1           | 2025-01-15T21:43:40.568834Z  INFO actix_web::middleware::logger: 172.20.0.4 "GET /collections/Document HTTP/1.1" 200 428 "-" "python-httpx/0.27.2" 0.000277    
wrenai-qdrant-1           | 2025-01-15T21:43:40.575790Z  INFO actix_web::middleware::logger: 172.20.0.4 "PUT /collections/Document/index?wait=true HTTP/1.1" 200 72 "-" "python-httpx/0.27.2" 0.002349    
wrenai-wren-ai-service-1  | ERROR:    Traceback (most recent call last):
wrenai-wren-ai-service-1  |   File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan
wrenai-wren-ai-service-1  |     async with self.lifespan_context(app) as maybe_state:
wrenai-wren-ai-service-1  |   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
wrenai-wren-ai-service-1  |     return await anext(self.gen)
wrenai-wren-ai-service-1  |            ^^^^^^^^^^^^^^^^^^^^^
wrenai-wren-ai-service-1  |   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
wrenai-wren-ai-service-1  |     async with original_context(app) as maybe_original_state:
wrenai-wren-ai-service-1  |   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
wrenai-wren-ai-service-1  |     return await anext(self.gen)
wrenai-wren-ai-service-1  |            ^^^^^^^^^^^^^^^^^^^^^
wrenai-wren-ai-service-1  |   File "/src/__main__.py", line 30, in lifespan
wrenai-wren-ai-service-1  |     app.state.service_container = create_service_container(pipe_components, settings)
wrenai-wren-ai-service-1  |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
wrenai-wren-ai-service-1  |   File "/src/globals.py", line 69, in create_service_container
wrenai-wren-ai-service-1  |     "db_schema": indexing.DBSchema(
wrenai-wren-ai-service-1  |                  ^^^^^^^^^^^^^^^^^^
wrenai-wren-ai-service-1  |   File "/src/pipelines/indexing/db_schema.py", line 346, in __init__
wrenai-wren-ai-service-1  |     "embedder": embedder_provider.get_document_embedder(),
wrenai-wren-ai-service-1  |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
wrenai-wren-ai-service-1  | AttributeError: 'NoneType' object has no attribute 'get_document_embedder'
wrenai-wren-ai-service-1  | 
wrenai-wren-ai-service-1  | ERROR:    Application startup failed. Exiting.

nemesisq3a avatar Jan 15 '25 21:01 nemesisq3a

@nemesisq3a could you provide your config.yaml? Thanks

cyyeh avatar Jan 16 '25 03:01 cyyeh

me too
image

wisonzhu avatar Jan 16 '25 04:01 wisonzhu

@nemesisq3a could you provide your config.yaml? Thanks

Sure! Thanks

type: llm
provider: litellm_llm
timeout: 120
models:
- model: gpt-4o-mini-2024-07-18
  api_base: https://api.openai.com/v1
  api_key_name: LLM_OPENAI_API_KEY
  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
    response_format:
      type: json_object
- model: gpt-4o-2024-08-06
  api_base: https://api.openai.com/v1
  api_key_name: LLM_OPENAI_API_KEY
  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
    response_format:
      type: json_object

---
type: embedder
provider: ollama_embedder
models:
  - model: qwen2.5-coder:7b
    dimension: 768
url: http://192.168.200.111:11434
timeout: 120

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

---
type: document_store
provider: qdrant
location: http://qdrant:6333
embedding_model_dim: 768
timeout: 120
recreate_index: true

---
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: openai_embedder.text-embedding-3-large
    document_store: qdrant
  - name: historical_question_indexing
    embedder: openai_embedder.text-embedding-3-large
    document_store: qdrant
  - name: table_description_indexing
    embedder: openai_embedder.text-embedding-3-large
    document_store: qdrant
  - name: db_schema_retrieval
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    embedder: openai_embedder.text-embedding-3-large
    document_store: qdrant
  - name: historical_question_retrieval
    embedder: openai_embedder.text-embedding-3-large
    document_store: qdrant
  - name: sql_generation
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    engine: wren_ui
  - name: sql_correction
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    engine: wren_ui
  - name: followup_sql_generation
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    engine: wren_ui
  - name: sql_summary
    llm: litellm_llm.gpt-4o-mini-2024-07-18
  - name: sql_answer
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    engine: wren_ui
  - name: sql_breakdown
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    engine: wren_ui
  - name: sql_expansion
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.gpt-4o-mini-2024-07-18
  - name: sql_regeneration
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    engine: wren_ui
  - name: semantics_description
    llm: litellm_llm.gpt-4o-mini-2024-07-18
  - name: relationship_recommendation
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    engine: wren_ui
  - name: question_recommendation
    llm: litellm_llm.gpt-4o-mini-2024-07-18
  - name: question_recommendation_db_schema_retrieval
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    embedder: openai_embedder.text-embedding-3-large
    document_store: qdrant
  - name: question_recommendation_sql_generation
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    engine: wren_ui
  - name: intent_classification
    llm: litellm_llm.gpt-4o-mini-2024-07-18
    embedder: openai_embedder.text-embedding-3-large
    document_store: qdrant
  - name: data_assistance
    llm: litellm_llm.gpt-4o-mini-2024-07-18
  - name: sql_pairs_indexing
    document_store: qdrant
    embedder: openai_embedder.text-embedding-3-large
  - name: sql_pairs_deletion
    document_store: qdrant
    embedder: openai_embedder.text-embedding-3-large 
  - name: sql_pairs_retrieval
    document_store: qdrant
    embedder: openai_embedder.text-embedding-3-large
    llm: litellm_llm.gpt-4o-mini-2024-07-18
  - name: preprocess_sql_data
    llm: litellm_llm.gpt-4o-mini-2024-07-18
  - name: sql_executor
    engine: wren_ui
  - name: chart_generation
    llm: litellm_llm.gpt-4o-mini-2024-07-18
  - name: chart_adjustment
    llm: litellm_llm.gpt-4o-mini-2024-07-18
  - name: sql_question_generation
    llm: litellm_llm.gpt-4o-mini-2024-07-18

---
settings:
  column_indexing_batch_size: 50
  table_retrieval_size: 10
  table_column_retrieval_size: 100
  allow_using_db_schemas_without_pruning: false
  query_cache_maxsize: 1000
  query_cache_ttl: 3600
  langfuse_host: https://cloud.langfuse.com
  langfuse_enable: true
  logging_level: DEBUG
  development: false

nemesisq3a avatar Jan 16 '25 06:01 nemesisq3a

:39:04 return await val 2025-01-16 15:39:04 ^^^^^^^^^ 2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 122, in new_fn 2025-01-16 15:39:04 await fn(**fn_kwargs) if asyncio.iscoroutinefunction(fn) else fn(**fn_kwargs) 2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 219, in async_wrapper 2025-01-16 15:39:04 self._handle_exception(observation, e) 2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 517, in _handle_exception 2025-01-16 15:39:04 raise e 2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 217, in async_wrapper 2025-01-16 15:39:04 result = await func(*args, **kwargs) 2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 15:39:04 File "/src/pipelines/generation/sql_answer.py", line 66, in generate_answer 2025-01-16 15:39:04 return await generator(prompt=prompt.get("prompt"), query_id=query_id) 2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 15:39:04 File "/src/providers/llm/azure_openai.py", line 66, in call 2025-01-16 15:39:04 return await self.run(*args, **kwargs) 2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/backoff/_async.py", line 151, in retry 2025-01-16 15:39:04 ret = await target(*args, **kwargs) 2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 15:39:04 File "/src/providers/llm/azure_openai.py", line 110, in run 2025-01-16 15:39:04 for chunk in completion: 2025-01-16 15:39:04 TypeError: 'LangfuseResponseGeneratorAsync' object is not iterable

wisonzhu avatar Jan 16 '25 07:01 wisonzhu

:39:04 return await val

2025-01-16 15:39:04 ^^^^^^^^^

2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 122, in new_fn

2025-01-16 15:39:04 await fn(**fn_kwargs) if asyncio.iscoroutinefunction(fn) else fn(**fn_kwargs)

2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^

2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 219, in async_wrapper

2025-01-16 15:39:04 self._handle_exception(observation, e)

2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 517, in _handle_exception

2025-01-16 15:39:04 raise e

2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 217, in async_wrapper

2025-01-16 15:39:04 result = await func(*args, **kwargs)

2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^

2025-01-16 15:39:04 File "/src/pipelines/generation/sql_answer.py", line 66, in generate_answer

2025-01-16 15:39:04 return await generator(prompt=prompt.get("prompt"), query_id=query_id)

2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2025-01-16 15:39:04 File "/src/providers/llm/azure_openai.py", line 66, in call

2025-01-16 15:39:04 return await self.run(*args, **kwargs)

2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2025-01-16 15:39:04 File "/app/.venv/lib/python3.12/site-packages/backoff/_async.py", line 151, in retry

2025-01-16 15:39:04 ret = await target(*args, **kwargs)

2025-01-16 15:39:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2025-01-16 15:39:04 File "/src/providers/llm/azure_openai.py", line 110, in run

2025-01-16 15:39:04 for chunk in completion:

2025-01-16 15:39:04 TypeError: 'LangfuseResponseGeneratorAsync' object is not iterable

@wisonzhu could u try to use litellm_llm as provider? azure_openai will be deprecated soon

cyyeh avatar Jan 16 '25 07:01 cyyeh

@nemesisq3a could you provide your config.yaml? Thanks

Sure! Thanks


type: llm

provider: litellm_llm

timeout: 120

models:

- model: gpt-4o-mini-2024-07-18

  api_base: https://api.openai.com/v1

  api_key_name: LLM_OPENAI_API_KEY

  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

    response_format:

      type: json_object

- model: gpt-4o-2024-08-06

  api_base: https://api.openai.com/v1

  api_key_name: LLM_OPENAI_API_KEY

  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

    response_format:

      type: json_object



---

type: embedder

provider: ollama_embedder

models:

  - model: qwen2.5-coder:7b

    dimension: 768

url: http://192.168.200.111:11434

timeout: 120



---

type: engine

provider: wren_ui

endpoint: http://wren-ui:3000



---

type: document_store

provider: qdrant

location: http://qdrant:6333

embedding_model_dim: 768

timeout: 120

recreate_index: true



---

type: pipeline

pipes:

  - name: db_schema_indexing

    embedder: openai_embedder.text-embedding-3-large

    document_store: qdrant

  - name: historical_question_indexing

    embedder: openai_embedder.text-embedding-3-large

    document_store: qdrant

  - name: table_description_indexing

    embedder: openai_embedder.text-embedding-3-large

    document_store: qdrant

  - name: db_schema_retrieval

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    embedder: openai_embedder.text-embedding-3-large

    document_store: qdrant

  - name: historical_question_retrieval

    embedder: openai_embedder.text-embedding-3-large

    document_store: qdrant

  - name: sql_generation

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    engine: wren_ui

  - name: sql_correction

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    engine: wren_ui

  - name: followup_sql_generation

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    engine: wren_ui

  - name: sql_summary

    llm: litellm_llm.gpt-4o-mini-2024-07-18

  - name: sql_answer

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    engine: wren_ui

  - name: sql_breakdown

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    engine: wren_ui

  - name: sql_expansion

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    engine: wren_ui

  - name: sql_explanation

    llm: litellm_llm.gpt-4o-mini-2024-07-18

  - name: sql_regeneration

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    engine: wren_ui

  - name: semantics_description

    llm: litellm_llm.gpt-4o-mini-2024-07-18

  - name: relationship_recommendation

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    engine: wren_ui

  - name: question_recommendation

    llm: litellm_llm.gpt-4o-mini-2024-07-18

  - name: question_recommendation_db_schema_retrieval

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    embedder: openai_embedder.text-embedding-3-large

    document_store: qdrant

  - name: question_recommendation_sql_generation

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    engine: wren_ui

  - name: intent_classification

    llm: litellm_llm.gpt-4o-mini-2024-07-18

    embedder: openai_embedder.text-embedding-3-large

    document_store: qdrant

  - name: data_assistance

    llm: litellm_llm.gpt-4o-mini-2024-07-18

  - name: sql_pairs_indexing

    document_store: qdrant

    embedder: openai_embedder.text-embedding-3-large

  - name: sql_pairs_deletion

    document_store: qdrant

    embedder: openai_embedder.text-embedding-3-large 

  - name: sql_pairs_retrieval

    document_store: qdrant

    embedder: openai_embedder.text-embedding-3-large

    llm: litellm_llm.gpt-4o-mini-2024-07-18

  - name: preprocess_sql_data

    llm: litellm_llm.gpt-4o-mini-2024-07-18

  - name: sql_executor

    engine: wren_ui

  - name: chart_generation

    llm: litellm_llm.gpt-4o-mini-2024-07-18

  - name: chart_adjustment

    llm: litellm_llm.gpt-4o-mini-2024-07-18

  - name: sql_question_generation

    llm: litellm_llm.gpt-4o-mini-2024-07-18



---

settings:

  column_indexing_batch_size: 50

  table_retrieval_size: 10

  table_column_retrieval_size: 100

  allow_using_db_schemas_without_pruning: false

  query_cache_maxsize: 1000

  query_cache_ttl: 3600

  langfuse_host: https://cloud.langfuse.com

  langfuse_enable: true

  logging_level: DEBUG

  development: false

Since Wren AI is running in containers, you may need to add Ollama to the same docker network of WrenAI's, and change the url of embedding model accordingly

cyyeh avatar Jan 16 '25 07:01 cyyeh

16:59:04 I0116 08:59:04.712 12 wren-ai-service:263] Question Recommendation pipeline is running... 2025-01-16 16:59:04 2025-01-16 16:59:04 Provider List: https://docs.litellm.ai/docs/providers 2025-01-16 16:59:04 2025-01-16 16:59:04 2025-01-16 16:59:04 ******************************************************************************** 2025-01-16 16:59:04 > generate [src.pipelines.generation.question_recommendation.generate()] encountered an error< 2025-01-16 16:59:04 > Node inputs: 2025-01-16 16:59:04 {'generator': '<function LitellmLLMProvider.get_generator.<locals...', 2025-01-16 16:59:04 'prompt': "<Task finished name='Task-106' coro=<AsyncGraphAda..."} 2025-01-16 16:59:04 ******************************************************************************** 2025-01-16 16:59:04 Traceback (most recent call last): 2025-01-16 16:59:04 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 122, in new_fn 2025-01-16 16:59:04 await fn(**fn_kwargs) if asyncio.iscoroutinefunction(fn) else fn(**fn_kwargs) 2025-01-16 16:59:04 ^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:04 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 219, in async_wrapper 2025-01-16 16:59:04 self._handle_exception(observation, e) 2025-01-16 16:59:04 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 517, in _handle_exception 2025-01-16 16:59:04 raise e 2025-01-16 16:59:04 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 217, in async_wrapper 2025-01-16 16:59:04 result = await func(*args, **kwargs) 2025-01-16 16:59:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:04 File "/src/pipelines/generation/question_recommendation.py", line 48, in generate 2025-01-16 16:59:04 return await generator(prompt=prompt.get("prompt")) 2025-01-16 16:59:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:04 File "/src/providers/llm/litellm.py", line 71, in _run 2025-01-16 16:59:04 completion: Union[ModelResponse] = await acompletion( 2025-01-16 16:59:04 ^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:04 File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 1234, in wrapper_async 2025-01-16 16:59:04 raise e 2025-01-16 16:59:04 File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 1085, in wrapper_async 2025-01-16 16:59:04 result = await original_function(*args, **kwargs) 2025-01-16 16:59:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:04 File "/app/.venv/lib/python3.12/site-packages/litellm/main.py", line 416, in acompletion 2025-01-16 16:59:04 _, custom_llm_provider, _, _ = get_llm_provider( 2025-01-16 16:59:04 ^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:04 File "/app/.venv/lib/python3.12/site-packages/litellm/litellm_core_utils/get_llm_provider_logic.py", line 351, in get_llm_provider 2025-01-16 16:59:04 raise e 2025-01-16 16:59:04 File "/app/.venv/lib/python3.12/site-packages/litellm/litellm_core_utils/get_llm_provider_logic.py", line 328, in get_llm_provider 2025-01-16 16:59:04 raise litellm.exceptions.BadRequestError( # type: ignore 2025-01-16 16:59:04 litellm.exceptions.BadRequestError: litellm.BadRequestError: LLM Provider NOT provided. Pass in the LLM provider you are trying to call. You passed model=devops-gpt-4o-50K-1st 2025-01-16 16:59:04 Pass model as E.g. For 'Huggingface' inference endpoints pass in completion(model='huggingface/starcoder',..) Learn more: https://docs.litellm.ai/docs/providers 2025-01-16 16:59:04 ------------------------------------------------------------------- 2025-01-16 16:59:04 Oh no an error! Need help with Hamilton? 2025-01-16 16:59:04 Join our slack and ask for help! https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g 2025-01-16 16:59:04 ------------------------------------------------------------------- 2025-01-16 16:59:04 2025-01-16 16:59:04 E0116 08:59:04.770 12 wren-ai-service:60] An error occurred during question recommendation generation: litellm.BadRequestError: LLM Provider NOT provided. Pass in the LLM provider you are trying to call. You passed model=devops-gpt-4o-50K-1st 2025-01-16 16:59:04 Pass model as E.g. For 'Huggingface' inference endpoints pass in completion(model='huggingface/starcoder',..) Learn more: https://docs.litellm.ai/docs/providers 2025-01-16 16:59:05 INFO: 172.25.0.6:60492 - "GET /v1/question-recommendations/b3c12663-cdde-4efc-bd34-c7c2b1674f79 HTTP/1.1" 200 OK 2025-01-16 16:59:06 INFO: 172.25.0.6:60502 - "POST /v1/sql-answers HTTP/1.1" 200 OK 2025-01-16 16:59:06 I0116 08:59:06.093 12 wren-ai-service:73] Preprocess SQL Data pipeline is running... 2025-01-16 16:59:06 I0116 08:59:06.124 12 wren-ai-service:141] Sql_Answer Generation pipeline is running... 2025-01-16 16:59:06 2025-01-16 16:59:06 Provider List: https://docs.litellm.ai/docs/providers 2025-01-16 16:59:06 2025-01-16 16:59:06 2025-01-16 16:59:06 ******************************************************************************** 2025-01-16 16:59:06 > generate_answer [src.pipelines.generation.sql_answer.generate_answer()] encountered an error< 2025-01-16 16:59:06 > Node inputs: 2025-01-16 16:59:06 {'generator': '<function LitellmLLMProvider.get_generator.<locals...', 2025-01-16 16:59:06 'prompt': "<Task finished name='Task-123' coro=<AsyncGraphAda...", 2025-01-16 16:59:06 'query_id': '1a7637a4-5360-47f4-84c7-64612d481968'} 2025-01-16 16:59:06 ******************************************************************************** 2025-01-16 16:59:06 Traceback (most recent call last): 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 122, in new_fn 2025-01-16 16:59:06 await fn(**fn_kwargs) if asyncio.iscoroutinefunction(fn) else fn(**fn_kwargs) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 219, in async_wrapper 2025-01-16 16:59:06 self._handle_exception(observation, e) 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 517, in _handle_exception 2025-01-16 16:59:06 raise e 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 217, in async_wrapper 2025-01-16 16:59:06 result = await func(*args, **kwargs) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/src/pipelines/generation/sql_answer.py", line 66, in generate_answer 2025-01-16 16:59:06 return await generator(prompt=prompt.get("prompt"), query_id=query_id) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/src/providers/llm/litellm.py", line 71, in _run 2025-01-16 16:59:06 completion: Union[ModelResponse] = await acompletion( 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 1234, in wrapper_async 2025-01-16 16:59:06 raise e 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 1085, in wrapper_async 2025-01-16 16:59:06 result = await original_function(*args, **kwargs) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/main.py", line 416, in acompletion 2025-01-16 16:59:06 _, custom_llm_provider, _, _ = get_llm_provider( 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/litellm_core_utils/get_llm_provider_logic.py", line 351, in get_llm_provider 2025-01-16 16:59:06 raise e 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/litellm_core_utils/get_llm_provider_logic.py", line 328, in get_llm_provider 2025-01-16 16:59:06 raise litellm.exceptions.BadRequestError( # type: ignore 2025-01-16 16:59:06 litellm.exceptions.BadRequestError: litellm.BadRequestError: LLM Provider NOT provided. Pass in the LLM provider you are trying to call. You passed model=devops-gpt-4o-50K-1st 2025-01-16 16:59:06 Pass model as E.g. For 'Huggingface' inference endpoints pass in completion(model='huggingface/starcoder',..) Learn more: https://docs.litellm.ai/docs/providers 2025-01-16 16:59:06 ------------------------------------------------------------------- 2025-01-16 16:59:06 Oh no an error! Need help with Hamilton? 2025-01-16 16:59:06 Join our slack and ask for help! https://join.slack.com/t/hamilton-opensource/shared_invite/zt-2niepkra8-DGKGf_tTYhXuJWBTXtIs4g 2025-01-16 16:59:06 ------------------------------------------------------------------- 2025-01-16 16:59:06 2025-01-16 16:59:06 Task exception was never retrieved 2025-01-16 16:59:06 future: <Task finished name='Task-122' coro=<SQLAnswer.run() done, defined at /app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py:204> exception=litellm.BadRequestError: LLM Provider NOT provided. Pass in the LLM provider you are trying to call. You passed model=devops-gpt-4o-50K-1st 2025-01-16 16:59:06 Pass model as E.g. For 'Huggingface' inference endpoints pass in completion(model='huggingface/starcoder',..) Learn more: https://docs.litellm.ai/docs/providers> 2025-01-16 16:59:06 Traceback (most recent call last): 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 219, in async_wrapper 2025-01-16 16:59:06 self._handle_exception(observation, e) 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 517, in _handle_exception 2025-01-16 16:59:06 raise e 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 217, in async_wrapper 2025-01-16 16:59:06 result = await func(*args, **kwargs) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/src/pipelines/generation/sql_answer.py", line 142, in run 2025-01-16 16:59:06 return await self._pipe.execute( 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 375, in execute 2025-01-16 16:59:06 raise e 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 366, in execute 2025-01-16 16:59:06 outputs = await self.raw_execute(_final_vars, overrides, display_graph, inputs=inputs) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 326, in raw_execute 2025-01-16 16:59:06 raise e 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 321, in raw_execute 2025-01-16 16:59:06 results = await await_dict_of_tasks(task_dict) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 23, in await_dict_of_tasks 2025-01-16 16:59:06 coroutines_gathered = await asyncio.gather(*coroutines) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 36, in process_value 2025-01-16 16:59:06 return await val 2025-01-16 16:59:06 ^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/hamilton/async_driver.py", line 122, in new_fn 2025-01-16 16:59:06 await fn(**fn_kwargs) if asyncio.iscoroutinefunction(fn) else fn(**fn_kwargs) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 219, in async_wrapper 2025-01-16 16:59:06 self._handle_exception(observation, e) 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 517, in _handle_exception 2025-01-16 16:59:06 raise e 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/langfuse/decorators/langfuse_decorator.py", line 217, in async_wrapper 2025-01-16 16:59:06 result = await func(*args, **kwargs) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/src/pipelines/generation/sql_answer.py", line 66, in generate_answer 2025-01-16 16:59:06 return await generator(prompt=prompt.get("prompt"), query_id=query_id) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/src/providers/llm/litellm.py", line 71, in _run 2025-01-16 16:59:06 completion: Union[ModelResponse] = await acompletion( 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 1234, in wrapper_async 2025-01-16 16:59:06 raise e 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/utils.py", line 1085, in wrapper_async 2025-01-16 16:59:06 result = await original_function(*args, **kwargs) 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/main.py", line 416, in acompletion 2025-01-16 16:59:06 _, custom_llm_provider, _, _ = get_llm_provider( 2025-01-16 16:59:06 ^^^^^^^^^^^^^^^^^ 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/litellm_core_utils/get_llm_provider_logic.py", line 351, in get_llm_provider 2025-01-16 16:59:06 raise e 2025-01-16 16:59:06 File "/app/.venv/lib/python3.12/site-packages/litellm/litellm_core_utils/get_llm_provider_logic.py", line 328, in get_llm_provider 2025-01-16 16:59:06 raise litellm.exceptions.BadRequestError( # type: ignore 2025-01-16 16:59:06 litellm.exceptions.BadRequestError: litellm.BadRequestError: LLM Provider NOT provided. Pass in the LLM provider you are trying to call. You passed model=devops-gpt-4o-50K-1st 2025-01-16 16:59:06 Pass model as E.g. For 'Huggingface' inference endpoints pass in completion(model='huggingface/starcoder',..) Learn more: https://docs.litellm.ai/docs/providers

wisonzhu avatar Jan 16 '25 09:01 wisonzhu

Since Wren AI is running in containers, you may need to add Ollama to the same docker network of WrenAI's, and change the url of embedding model accordingly

Ollama is running on a different server, in the same lan network (is a GPU dedicated server). I configured the http://192.168.200.111:11434 url (the ollama server machine lan ip) in the config.yaml file and in the .env file in accordance with the guide I found here. The docker network of the wren ai containers is in bridged mode, so it can comunicate with the ollama api server. Even the log provided seems to indicate that the ollama instance is reachable from wren ai

wrenai-wren-ai-service-1  | I0115 21:43:40.177 8 wren-ai-service:93] Getting provider: ollama_embedder from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:118] Ollama model qwen2.5-coder:7b already exists
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:180] Using Ollama Embedding Model: qwen2.5-coder:7b
wrenai-wren-ai-service-1  | I0115 21:43:40.195 8 wren-ai-service:181] Using Ollama URL: http://192.168.200.111:11434

From my prospective seems that the problem is beetween wren-ai-service and qdrant in itself. Can you suggest something specific I can verify on the configuration files? Thanks

nemesisq3a avatar Jan 16 '25 10:01 nemesisq3a

@nemesisq3a could you join discord, let's schedule a time so that you could you share your screen with me and we could look at the issue together?

https://discord.gg/5DvshJqG8Z

cyyeh avatar Jan 16 '25 13:01 cyyeh

@nemesisq3a could you join discord, let's schedule a time so that you could you share your screen with me and we could look at the issue together?

https://discord.gg/5DvshJqG8Z

All the containers are running on a corporate cloud, so I can't share this with you. Let me see if I can replicate this thing on my home desktop pc, I've a popos installation and a RTX 3080, all should work. When I'm ready I'll join you on discord. Thanks for now

nemesisq3a avatar Jan 16 '25 13:01 nemesisq3a

I am getting the exact same error. It's raised from

wrenai-wren-ai-service-1  |   File "/src/pipelines/indexing/db_schema.py", line 346, in __init__
wrenai-wren-ai-service-1  |     "embedder": embedder_provider.get_document_embedder(),

and my WrenAI info as below:

version: 0.13.2
embedder provider: ollama_embedder

Configured env vars:

CONFIG_PATH
EMBEDDER_OLLAMA_URL
EMBEDDING_MODEL

I listed relevant vars only above. And the initialization logs of ai service as below:

 I0119 06:13:17.609 7 wren-ai-service:93] Getting provider: ollama_embedder from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0119 06:13:17.699 7 wren-ai-service:109] Pulling Ollama model bge-m3

 I0119 06:13:19.478 7 wren-ai-service:116] Pulling Ollama model bge-m3: 100%

 I0119 06:13:19.502 7 wren-ai-service:180] Using Ollama Embedding Model: bge-m3

 I0119 06:13:19.502 7 wren-ai-service:181] Using Ollama URL: http://ollama:11434

All these configuration and settings are verified, and they are working.

thiner avatar Jan 19 '25 06:01 thiner

How can this problem be solved? 2025-01-20 14:23:03 I0120 06:23:03.457 12 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 768 2025-01-20 14:23:03 I0120 06:23:03.565 12 wren-ai-service:135] Loading Helpers for DB Schema Indexing Pipeline: src.pipelines.indexing.utils 2025-01-20 14:23:03 I0120 06:23:03.567 12 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 768 2025-01-20 14:23:03 I0120 06:23:03.643 12 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 768 2025-01-20 14:23:03 I0120 06:23:03.752 12 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 768 2025-01-20 14:23:03 I0120 06:23:03.986 12 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 768 2025-01-20 14:23:04 ERROR: Traceback (most recent call last): 2025-01-20 14:23:04 File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan 2025-01-20 14:23:04 async with self.lifespan_context(app) as maybe_state: 2025-01-20 14:23:04 File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__ 2025-01-20 14:23:04 return await anext(self.gen) 2025-01-20 14:23:04 ^^^^^^^^^^^^^^^^^^^^^ 2025-01-20 14:23:04 File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan 2025-01-20 14:23:04 async with original_context(app) as maybe_original_state: 2025-01-20 14:23:04 File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__ 2025-01-20 14:23:04 return await anext(self.gen) 2025-01-20 14:23:04 ^^^^^^^^^^^^^^^^^^^^^ 2025-01-20 14:23:04 File "/src/__main__.py", line 30, in lifespan 2025-01-20 14:23:04 app.state.service_container = create_service_container(pipe_components, settings) 2025-01-20 14:23:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-20 14:23:04 File "/src/globals.py", line 87, in create_service_container 2025-01-20 14:23:04 "data_assistance": generation.DataAssistance( 2025-01-20 14:23:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-20 14:23:04 File "/src/pipelines/generation/data_assistance.py", line 93, in __init__ 2025-01-20 14:23:04 "generator": llm_provider.get_generator( 2025-01-20 14:23:04 ^^^^^^^^^^^^^^^^^^^^^^^^^^ 2025-01-20 14:23:04 AttributeError: 'NoneType' object has no attribute 'get_generator' 2025-01-20 14:23:04 2025-01-20 14:23:04 ERROR: Application startup failed. Exiting.

kyyz147 avatar Jan 20 '25 07:01 kyyz147

@nemesisq3a @thiner @wisonzhu @kyyz147

Could you try to follow the config.yaml examples here and adapt to your usecases first? feel free to reach out to me if there are further issues. Thank you!

https://github.com/Canner/WrenAI/blob/chore/ai-service/add-llm-configs/wren-ai-service/docs/config_examples/config.ollama.yaml

cyyeh avatar Jan 20 '25 07:01 cyyeh

Ok, I replicated the configuration on my desktop PC and same get_document_embedder error.. This evening coming back from office I'll try the example linked. Just one question before doing, reading the example I can see:

- api_base: http://host.docker.internal:11434/v1  # change this to your ollama host, api_base should be <ollama_url>/v1
  model: openai/phi4:14b  # openai/<ollama_model_name>

In this case I have to keep the openai name even if it's not? I have to write something like

model: openai/qwen2.5-coder:7b

right?

nemesisq3a avatar Jan 20 '25 10:01 nemesisq3a

@nemesisq3a yes, as I said above, as long as you are using ollama LLMs, please follow the format: openai/<ollama_model_name>.

cyyeh avatar Jan 20 '25 10:01 cyyeh

@nemesisq3a btw the reason is that I found performance of using ollama/<ollama_model_name> and ollama_chat/<ollama_model_name> is worse. These are all following the model naming rule of LiteLLM. openai/<ollama_model_name> means you want to access the model using the openai api compatible way

cyyeh avatar Jan 20 '25 11:01 cyyeh

As I wrote on discord I tried using the provided example. Here's the code:

type: llm
provider: litellm_llm
timeout: 120
models:
- api_base: http://ollama:11434/v1  # change this to your ollama host, api_base should be <ollama_url>/v1
  model: openai/qwen2.5-coder:7b  # openai/<ollama_model_name>
  kwargs:
    n: 1
    temperature: 0

---
type: embedder
provider: ollama_embedder
models:
  - model: qwen2.5-coder:7b
    dimension: 7168
url: http://ollama:11434
timeout: 120

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

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

---
# 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: ollama_embedder.openai/qwen2.5-coder:7b
    document_store: qdrant
  - name: historical_question_indexing
    embedder: ollama_embedder.openai/qwen2.5-coder:7b
    document_store: qdrant
  - name: table_description_indexing
    embedder: ollama_embedder.openai/qwen2.5-coder:7b
    document_store: qdrant
  - name: db_schema_retrieval
    llm: litellm_llm.openai/qwen2.5-coder:7b
    embedder: ollama_embedder.openai/qwen2.5-coder:7b
    document_store: qdrant
  - name: historical_question_retrieval
    embedder: ollama_embedder.openai/qwen2.5-coder:7b
    document_store: qdrant
  - name: sql_generation
    llm: litellm_llm.openai/qwen2.5-coder:7b
    engine: wren_ui
  - name: sql_correction
    llm: litellm_llm.openai/qwen2.5-coder:7b
    engine: wren_ui
  - name: followup_sql_generation
    llm: litellm_llm.openai/qwen2.5-coder:7b
    engine: wren_ui
  - name: sql_summary
    llm: litellm_llm.openai/qwen2.5-coder:7b
  - name: sql_answer
    llm: litellm_llm.openai/qwen2.5-coder:7b
    engine: wren_ui
  - name: sql_breakdown
    llm: litellm_llm.openai/qwen2.5-coder:7b
    engine: wren_ui
  - name: sql_expansion
    llm: litellm_llm.openai/qwen2.5-coder:7b
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.openai/qwen2.5-coder:7b
  - name: sql_regeneration
    llm: litellm_llm.openai/qwen2.5-coder:7b
    engine: wren_ui
  - name: semantics_description
    llm: litellm_llm.openai/qwen2.5-coder:7b
  - name: relationship_recommendation
    llm: litellm_llm.openai/qwen2.5-coder:7b
    engine: wren_ui
  - name: question_recommendation
    llm: litellm_llm.openai/qwen2.5-coder:7b
  - name: question_recommendation_db_schema_retrieval
    llm: litellm_llm.openai/qwen2.5-coder:7b
    embedder: ollama_embedder.openai/qwen2.5-coder:7b
    document_store: qdrant
  - name: question_recommendation_sql_generation
    llm: litellm_llm.openai/qwen2.5-coder:7b
    engine: wren_ui
  - name: chart_generation
    llm: litellm_llm.openai/qwen2.5-coder:7b
  - name: chart_adjustment
    llm: litellm_llm.openai/qwen2.5-coder:7b
  - name: intent_classification
    llm: litellm_llm.openai/qwen2.5-coder:7b
    embedder: ollama_embedder.openai/qwen2.5-coder:7b
    document_store: qdrant
  - name: data_assistance
    llm: litellm_llm.openai/qwen2.5-coder:7b
  - name: sql_pairs_indexing
    document_store: qdrant
    embedder: ollama_embedder.openai/qwen2.5-coder:7b
  - name: sql_pairs_deletion
    document_store: qdrant
    embedder: ollama_embedder.openai/qwen2.5-coder:7b 
  - name: sql_pairs_retrieval
    document_store: qdrant
    embedder: ollama_embedder.openai/qwen2.5-coder:7b
    llm: litellm_llm.openai/qwen2.5-coder:7b
  - name: preprocess_sql_data
    llm: litellm_llm.openai/qwen2.5-coder:7b
  - name: sql_executor
    engine: wren_ui
  - name: sql_question_generation
    llm: litellm_llm.openai/qwen2.5-coder:7b

---
settings:
  column_indexing_batch_size: 50
  table_retrieval_size: 10
  table_column_retrieval_size: 100
  allow_using_db_schemas_without_pruning: false
  query_cache_maxsize: 1000
  query_cache_ttl: 3600
  langfuse_host: https://cloud.langfuse.com
  langfuse_enable: true
  logging_level: DEBUG
  development: true

Still same error as before:

wren-ai-service-1 | AttributeError: 'NoneType' object has no attribute 'get_document_embedder'

nemesisq3a avatar Jan 20 '25 21:01 nemesisq3a

I am still getting the same error. My ai-service configuration as below:

type: embedder
provider: openai_embedder
timeout: 120
models:
  - model: openai/bce-embedding-base
    dimension: 768
url: http://bce-embedding.localai:8080/v1

---
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_llm.openai/bce-embedding-base

The error message:

 ERROR:    Traceback (most recent call last):

   File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan

     async with self.lifespan_context(app) as maybe_state:

   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
     return await anext(self.gen)
            ^^^^^^^^^^^^^^^^^^^^^
   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
     async with original_context(app) as maybe_original_state:
   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
     return await anext(self.gen)
            ^^^^^^^^^^^^^^^^^^^^^
   File "/src/__main__.py", line 30, in lifespan
     app.state.service_container = create_service_container(pipe_components, settings)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/src/globals.py", line 69, in create_service_container
     "db_schema": indexing.DBSchema(
                  ^^^^^^^^^^^^^^^^^^
   File "/src/pipelines/indexing/db_schema.py", line 346, in __init__
     "embedder": embedder_provider.get_document_embedder(),
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 AttributeError: 'NoneType' object has no attribute 'get_document_embedder'
 ERROR:    Application startup failed. Exiting.

thiner avatar Jan 27 '25 03:01 thiner

__

I am still getting the same error. My ai-service configuration as below:

type: embedder
provider: openai_embedder
timeout: 120
models:
  - model: openai/bce-embedding-base
    dimension: 768
url: http://bce-embedding.localai:8080/v1

---
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_llm.openai/bce-embedding-base

The error message:

 ERROR:    Traceback (most recent call last):

   File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan

     async with self.lifespan_context(app) as maybe_state:

   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
     return await anext(self.gen)
            ^^^^^^^^^^^^^^^^^^^^^
   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
     async with original_context(app) as maybe_original_state:
   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
     return await anext(self.gen)
            ^^^^^^^^^^^^^^^^^^^^^
   File "/src/__main__.py", line 30, in lifespan
     app.state.service_container = create_service_container(pipe_components, settings)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/src/globals.py", line 69, in create_service_container
     "db_schema": indexing.DBSchema(
                  ^^^^^^^^^^^^^^^^^^
   File "/src/pipelines/indexing/db_schema.py", line 346, in __init__
     "embedder": embedder_provider.get_document_embedder(),
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 AttributeError: 'NoneType' object has no attribute 'get_document_embedder'
 ERROR:    Application startup failed. Exiting.

please use api_base for openai_embedder instead of url, thanks

cyyeh avatar Jan 27 '25 04:01 cyyeh

please use api_base for openai_embedder instead of url, thanks

The error remains the same. I am going to provide the whole log:

 Waiting for qdrant to start...

 qdrant has started.

 Waiting for wren-ai-service to start...

 INFO:     Started server process [7]

 INFO:     Waiting for application startup.

 I0127 05:33:37.553 7 wren-ai-service:42] Imported Provider: src.providers.document_store

 I0127 05:33:38.204 7 wren-ai-service:66] Registering provider: openai_embedder

 I0127 05:33:38.204 7 wren-ai-service:66] Registering provider: qdrant

 I0127 05:33:38.204 7 wren-ai-service:42] Imported Provider: src.providers.document_store.qdrant

 I0127 05:33:38.205 7 wren-ai-service:42] Imported Provider: src.providers.embedder

 I0127 05:33:38.206 7 wren-ai-service:66] Registering provider: azure_openai_embedder

 I0127 05:33:38.207 7 wren-ai-service:42] Imported Provider: src.providers.embedder.azure_openai

 I0127 05:33:38.211 7 wren-ai-service:66] Registering provider: ollama_embedder

 I0127 05:33:38.211 7 wren-ai-service:42] Imported Provider: src.providers.embedder.ollama

 I0127 05:33:38.211 7 wren-ai-service:42] Imported Provider: src.providers.embedder.openai

 I0127 05:33:38.212 7 wren-ai-service:42] Imported Provider: src.providers.engine

 I0127 05:33:38.213 7 wren-ai-service:66] Registering provider: wren_ui

 I0127 05:33:38.214 7 wren-ai-service:66] Registering provider: wren_ibis

 I0127 05:33:38.214 7 wren-ai-service:66] Registering provider: wren_engine

 I0127 05:33:38.214 7 wren-ai-service:42] Imported Provider: src.providers.engine.wren

 I0127 05:33:38.214 7 wren-ai-service:42] Imported Provider: src.providers.llm

 I0127 05:33:38.239 7 wren-ai-service:66] Registering provider: azure_openai_llm

 I0127 05:33:38.239 7 wren-ai-service:42] Imported Provider: src.providers.llm.azure_openai

 /app/.venv/lib/python3.12/site-packages/pydantic/_internal/_config.py:345: UserWarning: Valid config keys have changed in V2:

 * 'fields' has been removed

   warnings.warn(message, UserWarning)

 I0127 05:33:40.274 7 wren-ai-service:66] Registering provider: litellm_llm

 I0127 05:33:40.274 7 wren-ai-service:42] Imported Provider: src.providers.llm.litellm

 I0127 05:33:40.279 7 wren-ai-service:66] Registering provider: ollama_llm

 I0127 05:33:40.279 7 wren-ai-service:42] Imported Provider: src.providers.llm.ollama

 I0127 05:33:40.394 7 wren-ai-service:66] Registering provider: openai_llm

 I0127 05:33:40.394 7 wren-ai-service:42] Imported Provider: src.providers.llm.openai

 I0127 05:33:40.394 7 wren-ai-service:42] Imported Provider: src.providers.loader

 I0127 05:33:40.394 7 wren-ai-service:18] initializing provider: openai_embedder

 I0127 05:33:40.394 7 wren-ai-service:93] Getting provider: openai_embedder from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.394 7 wren-ai-service:203] Initializing OpenAIEmbedder provider with API base: http://bce-embedding.localai:8080/v1

 I0127 05:33:40.394 7 wren-ai-service:209] Using OpenAI API-compatible Embedding Model: openai/bce-embedding-base

 I0127 05:33:40.394 7 wren-ai-service:18] initializing provider: litellm_llm

 I0127 05:33:40.394 7 wren-ai-service:93] Getting provider: litellm_llm from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.394 7 wren-ai-service:18] initializing provider: litellm_llm

 I0127 05:33:40.394 7 wren-ai-service:93] Getting provider: litellm_llm from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.395 7 wren-ai-service:18] initializing provider: qdrant

 I0127 05:33:40.395 7 wren-ai-service:93] Getting provider: qdrant from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.395 7 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 3072

 I0127 05:33:40.559 7 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 3072

 I0127 05:33:40.710 7 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 3072

 I0127 05:33:40.865 7 wren-ai-service:18] initializing provider: wren_ui

 I0127 05:33:40.866 7 wren-ai-service:93] Getting provider: wren_ui from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.866 7 wren-ai-service:24] Using Engine: wren_ui

 I0127 05:33:40.869 7 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 3072

 ERROR:    Traceback (most recent call last):

   File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan

     async with self.lifespan_context(app) as maybe_state:

   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__

     return await anext(self.gen)

            ^^^^^^^^^^^^^^^^^^^^^

   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan

     async with original_context(app) as maybe_original_state:

   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__

     return await anext(self.gen)

            ^^^^^^^^^^^^^^^^^^^^^

   File "/src/__main__.py", line 30, in lifespan

     app.state.service_container = create_service_container(pipe_components, settings)

                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

   File "/src/globals.py", line 69, in create_service_container

     "db_schema": indexing.DBSchema(

                  ^^^^^^^^^^^^^^^^^^

   File "/src/pipelines/indexing/db_schema.py", line 346, in __init__

     "embedder": embedder_provider.get_document_embedder(),

                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 AttributeError: 'NoneType' object has no attribute 'get_document_embedder'

 

 ERROR:    Application startup failed. Exiting.

 Timeout: wren-ai-service did not start within 60 seconds

thiner avatar Jan 27 '25 05:01 thiner

please use api_base for openai_embedder instead of url, thanks

The error remains the same. I am going to provide the whole log:

 Waiting for qdrant to start...

 qdrant has started.

 Waiting for wren-ai-service to start...

 INFO:     Started server process [7]

 INFO:     Waiting for application startup.

 I0127 05:33:37.553 7 wren-ai-service:42] Imported Provider: src.providers.document_store

 I0127 05:33:38.204 7 wren-ai-service:66] Registering provider: openai_embedder

 I0127 05:33:38.204 7 wren-ai-service:66] Registering provider: qdrant

 I0127 05:33:38.204 7 wren-ai-service:42] Imported Provider: src.providers.document_store.qdrant

 I0127 05:33:38.205 7 wren-ai-service:42] Imported Provider: src.providers.embedder

 I0127 05:33:38.206 7 wren-ai-service:66] Registering provider: azure_openai_embedder

 I0127 05:33:38.207 7 wren-ai-service:42] Imported Provider: src.providers.embedder.azure_openai

 I0127 05:33:38.211 7 wren-ai-service:66] Registering provider: ollama_embedder

 I0127 05:33:38.211 7 wren-ai-service:42] Imported Provider: src.providers.embedder.ollama

 I0127 05:33:38.211 7 wren-ai-service:42] Imported Provider: src.providers.embedder.openai

 I0127 05:33:38.212 7 wren-ai-service:42] Imported Provider: src.providers.engine

 I0127 05:33:38.213 7 wren-ai-service:66] Registering provider: wren_ui

 I0127 05:33:38.214 7 wren-ai-service:66] Registering provider: wren_ibis

 I0127 05:33:38.214 7 wren-ai-service:66] Registering provider: wren_engine

 I0127 05:33:38.214 7 wren-ai-service:42] Imported Provider: src.providers.engine.wren

 I0127 05:33:38.214 7 wren-ai-service:42] Imported Provider: src.providers.llm

 I0127 05:33:38.239 7 wren-ai-service:66] Registering provider: azure_openai_llm

 I0127 05:33:38.239 7 wren-ai-service:42] Imported Provider: src.providers.llm.azure_openai

 /app/.venv/lib/python3.12/site-packages/pydantic/_internal/_config.py:345: UserWarning: Valid config keys have changed in V2:

 * 'fields' has been removed

   warnings.warn(message, UserWarning)

 I0127 05:33:40.274 7 wren-ai-service:66] Registering provider: litellm_llm

 I0127 05:33:40.274 7 wren-ai-service:42] Imported Provider: src.providers.llm.litellm

 I0127 05:33:40.279 7 wren-ai-service:66] Registering provider: ollama_llm

 I0127 05:33:40.279 7 wren-ai-service:42] Imported Provider: src.providers.llm.ollama

 I0127 05:33:40.394 7 wren-ai-service:66] Registering provider: openai_llm

 I0127 05:33:40.394 7 wren-ai-service:42] Imported Provider: src.providers.llm.openai

 I0127 05:33:40.394 7 wren-ai-service:42] Imported Provider: src.providers.loader

 I0127 05:33:40.394 7 wren-ai-service:18] initializing provider: openai_embedder

 I0127 05:33:40.394 7 wren-ai-service:93] Getting provider: openai_embedder from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.394 7 wren-ai-service:203] Initializing OpenAIEmbedder provider with API base: http://bce-embedding.localai:8080/v1

 I0127 05:33:40.394 7 wren-ai-service:209] Using OpenAI API-compatible Embedding Model: openai/bce-embedding-base

 I0127 05:33:40.394 7 wren-ai-service:18] initializing provider: litellm_llm

 I0127 05:33:40.394 7 wren-ai-service:93] Getting provider: litellm_llm from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.394 7 wren-ai-service:18] initializing provider: litellm_llm

 I0127 05:33:40.394 7 wren-ai-service:93] Getting provider: litellm_llm from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.395 7 wren-ai-service:18] initializing provider: qdrant

 I0127 05:33:40.395 7 wren-ai-service:93] Getting provider: qdrant from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.395 7 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 3072

 I0127 05:33:40.559 7 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 3072

 I0127 05:33:40.710 7 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 3072

 I0127 05:33:40.865 7 wren-ai-service:18] initializing provider: wren_ui

 I0127 05:33:40.866 7 wren-ai-service:93] Getting provider: wren_ui from {'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'qdrant': <class 'src.providers.document_store.qdrant.QdrantProvider'>, 'azure_openai_embedder': <class 'src.providers.embedder.azure_openai.AzureOpenAIEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}

 I0127 05:33:40.866 7 wren-ai-service:24] Using Engine: wren_ui

 I0127 05:33:40.869 7 wren-ai-service:370] Using Qdrant Document Store with Embedding Model Dimension: 3072

 ERROR:    Traceback (most recent call last):

   File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan

     async with self.lifespan_context(app) as maybe_state:

   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__

     return await anext(self.gen)

            ^^^^^^^^^^^^^^^^^^^^^

   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan

     async with original_context(app) as maybe_original_state:

   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__

     return await anext(self.gen)

            ^^^^^^^^^^^^^^^^^^^^^

   File "/src/__main__.py", line 30, in lifespan

     app.state.service_container = create_service_container(pipe_components, settings)

                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

   File "/src/globals.py", line 69, in create_service_container

     "db_schema": indexing.DBSchema(

                  ^^^^^^^^^^^^^^^^^^

   File "/src/pipelines/indexing/db_schema.py", line 346, in __init__

     "embedder": embedder_provider.get_document_embedder(),

                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

 AttributeError: 'NoneType' object has no attribute 'get_document_embedder'

 

 ERROR:    Application startup failed. Exiting.

 Timeout: wren-ai-service did not start within 60 seconds

Please give me the config.yaml. There must be some config issues

cyyeh avatar Jan 27 '25 05:01 cyyeh

@cyyeh The config.yaml file as below:

type: llm
provider: litellm_llm
timeout: 120
models:
- model: openai/qwen2.5-72b-instruct
  api_base: https://llm.localai/v1
  api_key_name: LLM_OPENAI_API_KEY
  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: 32768
    response_format:
      type: json_object
- model: openai/qwen2.5-coder-instruct
  api_base: https://llm.localai/v1
  api_key_name: LLM_OPENAI_API_KEY
  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: 16384
    response_format:
      type: json_object

---
type: embedder
provider: openai_embedder
timeout: 120
models:
  - model: openai/bce-embedding-base
    dimension: 768
    api_base: http://bce-embedding.localai:8080/v1


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

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

---
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_llm.openai/bce-embedding-base
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_llm.openai/bce-embedding-base
    document_store: qdrant
  - name: table_description_indexing
    embedder: litellm_llm.openai/bce-embedding-base
    document_store: qdrant
  - name: db_schema_retrieval
    llm: litellm_llm.openai/qwen2.5-72b-instruct
    embedder: litellm_llm.openai/bce-embedding-base
    document_store: qdrant
  - name: historical_question_retrieval
    embedder: litellm_llm.openai/bce-embedding-base
    document_store: qdrant
  - name: sql_generation
    llm: litellm_llm.openai/qwen2.5-coder-instruct
    engine: wren_ui
  - name: sql_correction
    llm: litellm_llm.openai/qwen2.5-coder-instruct
    engine: wren_ui
  - name: followup_sql_generation
    llm: litellm_llm.openai/qwen2.5-coder-instruct
    engine: wren_ui
  - name: sql_summary
    llm: litellm_llm.openai/qwen2.5-72b-instruct
  - name: sql_answer
    llm: litellm_llm.openai/qwen2.5-72b-instruct
    engine: wren_ui
  - name: sql_breakdown
    llm: litellm_llm.openai/qwen2.5-coder-instruct
    engine: wren_ui
  - name: sql_expansion
    llm: litellm_llm.openai/qwen2.5-coder-instruct
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.openai/qwen2.5-72b-instruct
  - name: sql_regeneration
    llm: litellm_llm.openai/qwen2.5-coder-instruct
    engine: wren_ui
  - name: semantics_description
    llm: litellm_llm.openai/qwen2.5-72b-instruct
  - name: relationship_recommendation
    llm: litellm_llm.openai/qwen2.5-72b-instruct
    engine: wren_ui
  - name: question_recommendation
    llm: litellm_llm.openai/qwen2.5-72b-instruct
  - name: intent_classification
    llm: litellm_llm.openai/qwen2.5-72b-instruct
    embedder: litellm_llm.openai/bce-embedding-base
    document_store: qdrant
  - name: data_assistance
    llm: litellm_llm.openai/qwen2.5-72b-instruct
  - name: sql_pairs_preparation
    document_store: qdrant
    embedder: litellm_llm.openai/bce-embedding-base
    llm: litellm_llm.openai/qwen2.5-72b-instruct
  - name: sql_pairs_deletion
    document_store: qdrant
    embedder: litellm_llm.openai/bce-embedding-base
  - name: sql_pairs_retrieval
    document_store: qdrant
    embedder: litellm_llm.openai/bce-embedding-base
    llm: litellm_llm.openai/qwen2.5-72b-instruct
  - name: preprocess_sql_data
    llm: litellm_llm.openai/qwen2.5-72b-instruct
  - name: sql_executor
    engine: wren_ui
  - name: chart_generation
    llm: litellm_llm.openai/qwen2.5-72b-instruct
  - name: chart_adjustment
    llm: litellm_llm.openai/qwen2.5-72b-instruct
---
settings:
  column_indexing_batch_size: 50
  table_retrieval_size: 10
  table_column_retrieval_size: 100
  allow_using_db_schemas_without_pruning: false
  query_cache_maxsize: 1000
  query_cache_ttl: 3600
  langfuse_host: http://langfuse.dify:3000
  langfuse_enable: true
  logging_level: DEBUG
  development: false

thiner avatar Jan 27 '25 05:01 thiner

@thiner Have you solved this issue? I encountered the same problem as you.

Ahaha1998 avatar Feb 11 '25 08:02 Ahaha1998

The configuration of this project is almost discouraging people

wjwzy avatar Feb 13 '25 07:02 wjwzy

@wjwzy

excuse me, few questions in order to clarify your comment:

  1. did you notice we provide configuration examples as stated in the README? (Check configuration examples here!)
  2. did you read the config example files and comments inside?

cyyeh avatar Feb 13 '25 07:02 cyyeh

@cyyeh @thiner @nemesisq3a Sorry, my English is poor, so the following English is a translation from Chinese and may not be very accurate.

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

Have you solved this issue? I encountered the same problem as you.

Below are the key details of the configuration file:

`type: llm provider: litellm_llm timeout: 120 models:

  • model: openai/Qwen/Qwen2.5-32B-Instruct api_base: https://api.siliconflow.cn/v1 api_key_name: sk-xxxxx kwargs: temperature: 0 n: 1 seed: 0 max_tokens: 32000

type: embedder provider: litellm_embedder models:

  • model: openai/BAAI/bge-large-zh-v1.5 api_base: https://api.siliconflow.cn/v1 api_key_name: sk-xxxx timeout: 120`

siliconflow provider Same interface definition as OpenAI

caicongyang avatar Feb 24 '25 10:02 caicongyang

Have you solved this issue? I encountered the same problem as you.

Below are the key details of the configuration file:

`type: llm provider: litellm_llm timeout: 120 models:

  • model: openai/Qwen/Qwen2.5-32B-Instruct api_base: https://api.siliconflow.cn/v1 api_key_name: sk-xxxxx kwargs: temperature: 0 n: 1 seed: 0 max_tokens: 32000

type: embedder provider: litellm_embedder models:

  • model: openai/BAAI/bge-large-zh-v1.5 api_base: https://api.siliconflow.cn/v1 api_key_name: sk-xxxx timeout: 120`

siliconflow provider Same interface definition as OpenAI

Hi @caicongyang, the property api_key_name is used to specify the key for your secret or api key. Then you need to set up the key and value in an environment variable.

e.g. I specified the api_key_name as GEMINI_API_KEY, then in the env file, I will set the real key value pair.

-- config.yaml

models:
- alias: demo
  api_key_name: GEMINI_API_KEY
  kwargs:
    n: 1
    temperature: 0
  model: gemini/gemini-2.0-flash
provider: litellm_llm
timeout: 120
type: llm
-- .env
GEMINI_API_KEY=Axxxxxxxxxx

paopa avatar Mar 03 '25 10:03 paopa

Help me please!

AttributeError: 'NoneType' object has no attribute 'get_document_embedder'

`re_openai.AzureOpenAIEmbedderProvider'>, 'litellm_embedder': <class 'src.providers.embedder.litellm.LitellmEmbedderProvider'>, 'ollama_embedder': <class 'src.providers.embedder.ollama.OllamaEmbedderProvider'>, 'openai_embedder': <class 'src.providers.embedder.openai.OpenAIEmbedderProvider'>, 'wren_ui': <class 'src.providers.engine.wren.WrenUI'>, 'wren_ibis': <class 'src.providers.engine.wren.WrenIbis'>, 'wren_engine': <class 'src.providers.engine.wren.WrenEngine'>, 'azure_openai_llm': <class 'src.providers.llm.azure_openai.AzureOpenAILLMProvider'>, 'litellm_llm': <class 'src.providers.llm.litellm.LitellmLLMProvider'>, 'ollama_llm': <class 'src.providers.llm.ollama.OllamaLLMProvider'>, 'openai_llm': <class 'src.providers.llm.openai.OpenAILLMProvider'>}
2025-03-05 14:42:22 I0305 06:42:22.363 8 wren-ai-service:24] Using Engine: wren_ui
2025-03-05 14:42:22 I0305 06:42:22.368 8 wren-ai-service:368] Using Qdrant Document Store with Embedding Model Dimension: 3072
2025-03-05 14:42:22 ERROR:    Traceback (most recent call last):
2025-03-05 14:42:22   File "/app/.venv/lib/python3.12/site-packages/starlette/routing.py", line 693, in lifespan
2025-03-05 14:42:22     async with self.lifespan_context(app) as maybe_state:
2025-03-05 14:42:22   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-03-05 14:42:22     return await anext(self.gen)
2025-03-05 14:42:22            ^^^^^^^^^^^^^^^^^^^^^
2025-03-05 14:42:22   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
2025-03-05 14:42:22     async with original_context(app) as maybe_original_state:
2025-03-05 14:42:22   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-03-05 14:42:22     return await anext(self.gen)
2025-03-05 14:42:22            ^^^^^^^^^^^^^^^^^^^^^
2025-03-05 14:42:22   File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 133, in merged_lifespan
2025-03-05 14:42:22     async with original_context(app) as maybe_original_state:
2025-03-05 14:42:22   File "/usr/local/lib/python3.12/contextlib.py", line 204, in __aenter__
2025-03-05 14:42:22     return await anext(self.gen)
2025-03-05 14:42:22            ^^^^^^^^^^^^^^^^^^^^^
2025-03-05 14:42:22   File "/src/__main__.py", line 32, in lifespan
2025-03-05 14:42:22     app.state.service_container = create_service_container(pipe_components, settings)
2025-03-05 14:42:22                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-03-05 14:42:22   File "/src/globals.py", line 71, in create_service_container
2025-03-05 14:42:22     "db_schema": indexing.DBSchema(
2025-03-05 14:42:22                  ^^^^^^^^^^^^^^^^^^
2025-03-05 14:42:22   File "/src/pipelines/indexing/db_schema.py", line 346, in __init__
2025-03-05 14:42:22     "embedder": embedder_provider.get_document_embedder(),
2025-03-05 14:42:22                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2025-03-05 14:42:22 AttributeError: 'NoneType' object has no attribute 'get_document_embedder'
2025-03-05 14:42:22 
2025-03-05 14:42:22 ERROR:    Application startup failed. Exiting.`

config.yaml

type: llm
provider: litellm_llm
timeout: 120
models:
- model: openai/deepseek-r1:14b
  api_base: http://host.docker.internal:11434
  api_key_name: LLM_OPENAI_API_KEY
  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:latest:latest
  dimension: 5000
  api_base: http://host.docker.internal:11434
  timeout: 600

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

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

---
type: pipeline
pipes:
  - name: db_schema_indexing
    embedder: litellm_embedder.openai/nomic-embed-text:latest
    document_store: qdrant
  - name: historical_question_indexing
    embedder: litellm_embedder.openai/nomic-embed-text:latest
    document_store: qdrant
  - name: table_description_indexing
    embedder: litellm_embedder.openai/nomic-embed-text:latest
    document_store: qdrant
  - name: db_schema_retrieval
    llm: litellm_llm.openai/deepseek-r1:14b
    embedder: litellm_embedder.openai/nomic-embed-text:latest
    document_store: qdrant
  - name: historical_question_retrieval
    embedder: litellm_embedder.openai/nomic-embed-text:latest
    document_store: qdrant
  - name: sql_generation
    llm: litellm_llm.openai/deepseek-r1:14b
    engine: wren_ui
  - name: sql_correction
    llm: litellm_llm.openai/deepseek-r1:14b
    engine: wren_ui
  - name: followup_sql_generation
    llm: litellm_llm.openai/deepseek-r1:14b
    engine: wren_ui
  - name: sql_summary
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: sql_answer
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: sql_breakdown
    llm: litellm_llm.openai/deepseek-r1:14b
    engine: wren_ui
  - name: sql_expansion
    llm: litellm_llm.openai/deepseek-r1:14b
    engine: wren_ui
  - name: semantics_description
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: relationship_recommendation
    llm: litellm_llm.openai/deepseek-r1:14b
    engine: wren_ui
  - name: question_recommendation
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: question_recommendation_db_schema_retrieval
    llm: litellm_llm.openai/deepseek-r1:14b
    embedder: litellm_embedder.openai/nomic-embed-text:latest
    document_store: qdrant
  - name: question_recommendation_sql_generation
    llm: litellm_llm.openai/deepseek-r1:14b
    engine: wren_ui
  - name: intent_classification
    llm: litellm_llm.openai/deepseek-r1:14b
    embedder: litellm_embedder.openai/nomic-embed-text:latest
    document_store: qdrant
  - name: data_assistance
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: sql_pairs_indexing
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text:latest
  - name: sql_pairs_retrieval
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text:latest
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: preprocess_sql_data
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: sql_executor
    engine: wren_ui
  - name: chart_generation
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: chart_adjustment
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: sql_question_generation
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: sql_generation_reasoning
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: sql_regeneration
    llm: litellm_llm.openai/deepseek-r1:14b
    engine: wren_ui
  - name: sql_explanation
    llm: litellm_llm.openai/deepseek-r1:14b
  - name: sql_pairs_deletion
    document_store: qdrant
    embedder: litellm_embedder.openai/nomic-embed-text:latest
---
settings:
  engine_timeout: 30
  column_indexing_batch_size: 100
  table_retrieval_size: 10
  table_column_retrieval_size: 100
  allow_using_db_schemas_without_pruning: false
  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=1
EMBEDDER_OPENAI_API_KEY=1
LLM_AZURE_OPENAI_API_KEY=1
EMBEDDER_AZURE_OPENAI_API_KEY=1
QDRANT_API_KEY=1
LLM_OLLAMA_API_KEY=1

# 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

EMBEDDER_OLLAMA_URL=http://host.docker.internal:11434

jonathanyb avatar Mar 05 '25 07:03 jonathanyb

Hi @jonathanyb, I noticed there is a wrong setup in your config for the embedder section, can you try to fix it and restart it again? Thank you!

- model: openai/nomic-embed-text:latest:latest

And I think we can remove this from your LLM section.

  api_key_name: LLM_OPENAI_API_KEY

paopa avatar Mar 05 '25 11:03 paopa