opengpts
opengpts copied to clipboard
docker compose failing - frontend connecting to backend?
Having issues running via docker compose, screen comes up "half blank" and + New Bot does not work etc. Logs suggest issues connecting opengpts-frontend to backend?
Populated .env
simply with an OPENAI_API_KEY="sk-...
Docker Version: 24.0.7
(Mac 14.4)
docker compose up
Containers all start, Uvicorn serving the "1/2 blank" page and opengpts-backend
container generating errors, However the key issue may well be the opengpts-frontend
see log output below
opengpts-frontend |
opengpts-frontend | VITE v4.5.0 ready in 117 ms
opengpts-frontend |
opengpts-frontend | ➜ Local: http://localhost:5173/
opengpts-frontend | ➜ Network: http://172.21.0.3:5173/
opengpts-backend | Process SpawnProcess-1:
opengpts-backend | Traceback (most recent call last):
opengpts-backend | File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
opengpts-backend | self.run()
opengpts-backend | File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run
opengpts-backend | self._target(*self._args, **self._kwargs)
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_started
opengpts-backend | target(sockets=sockets)
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run
opengpts-backend | return asyncio.run(self.serve(sockets=sockets))
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
opengpts-backend | return runner.run(main)
opengpts-backend | ^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
opengpts-backend | return self._loop.run_until_complete(task)
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
opengpts-backend | return future.result()
opengpts-backend | ^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve
opengpts-backend | config.load()
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/config.py", line 467, in load
opengpts-backend | self.loaded_app = import_from_string(self.app)
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/importer.py", line 21, in import_from_string
opengpts-backend | module = importlib.import_module(module_str)
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
opengpts-backend | return _bootstrap._gcd_import(name[level:], package, level)
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
opengpts-backend | File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
opengpts-backend | File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
opengpts-backend | File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
opengpts-backend | File "<frozen importlib._bootstrap_external>", line 940, in exec_module
opengpts-backend | File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
opengpts-backend | File "/backend/app/server.py", line 9, in <module>
opengpts-backend | from app.api import router as api_router
opengpts-backend | File "/backend/app/api/__init__.py", line 3, in <module>
opengpts-backend | from app.api.assistants import router as assistants_router
opengpts-backend | File "/backend/app/api/assistants.py", line 7, in <module>
opengpts-backend | import app.storage as storage
opengpts-backend | File "/backend/app/storage.py", line 9, in <module>
opengpts-backend | from app.agent import AgentType, get_agent_executor
opengpts-backend | File "/backend/app/agent.py", line 23, in <module>
opengpts-backend | from app.tools import (
opengpts-backend | File "/backend/app/tools.py", line 163, in <module>
opengpts-backend | v()
opengpts-backend | File "/backend/app/tools.py", line 124, in _get_action_server
opengpts-backend | toolkit = ActionServerToolkit(
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/pydantic/main.py", line 341, in __init__
opengpts-backend | raise validation_error
opengpts-backend | pydantic.error_wrappers.ValidationError: 2 validation errors for ActionServerToolkit
opengpts-backend | url
opengpts-backend | none is not an allowed value (type=type_error.none.not_allowed)
opengpts-backend | api_key
opengpts-backend | none is not an allowed value (type=type_error.none.not_allowed)
opengpts-frontend | Error: connect ECONNREFUSED 172.21.0.4:8000
opengpts-frontend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)
opengpts-frontend | 11:37:25 AM [vite] http proxy error at /runs/config_schema:
opengpts-frontend | Error: connect ECONNREFUSED 172.21.0.4:8000
opengpts-frontend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)
opengpts-frontend | 11:37:25 AM [vite] http proxy error at /assistants/public/:
opengpts-frontend | Error: connect ECONNREFUSED 172.21.0.4:8000
opengpts-frontend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)
opengpts-frontend | 11:37:25 AM [vite] http proxy error at /assistants/:
opengpts-frontend | Error: connect ECONNREFUSED 172.21.0.4:8000
I figured out that this happens because of missing API key for robocorp agent tool, I tried adding the keys, and it moves forward, but now it is stuck because it cannot find openai api schema on the endpoint that I specify for robocorp agent tool. I am trying to figure out how to get it to stop expecting to use robocorp, that should ideally solve the issue. Perhaps. See the trace below: opengpts-redis | 8:M 03 Feb 2024 14:23:34.604 * Server initialized
opengpts-redis | 8:M 03 Feb 2024 14:23:34.605 * Ready to accept connections tcp
opengpts-frontend | yarn run v1.22.19
opengpts-frontend | $ vite --host
opengpts-backend | INFO: Will watch for changes in these directories: ['/backend']
opengpts-backend | INFO: Uvicorn running on http://localhost:8000 (Press CTRL+C to quit)
opengpts-backend | INFO: Started reloader process [1] using StatReload
opengpts-frontend |
opengpts-frontend | VITE v4.5.0 ready in 106 ms
opengpts-frontend |
opengpts-frontend | ➜ Local: http://localhost:5173/
opengpts-frontend | ➜ Network: http://xx:5173/
opengpts-backend | Process SpawnProcess-1:
opengpts-backend | Traceback (most recent call last):
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/langchain_robocorp/toolkits.py", line 121, in get_tools
opengpts-backend | api_spec = reduce_openapi_spec(self.url, json_spec)
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/langchain_robocorp/_common.py", line 30, in reduce_openapi_spec
opengpts-backend | for route, operation in spec["paths"].items()
opengpts-backend | ~~~~^^^^^^^^^
opengpts-backend | KeyError: 'paths'
opengpts-backend |
opengpts-backend | During handling of the above exception, another exception occurred:
opengpts-backend |
opengpts-backend | Traceback (most recent call last):
opengpts-backend | File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
opengpts-backend | self.run()
opengpts-backend | File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run
opengpts-backend | self._target(*self._args, **self._kwargs)
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_started
opengpts-backend | target(sockets=sockets)
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run
opengpts-backend | return asyncio.run(self.serve(sockets=sockets))
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
opengpts-backend | return runner.run(main)
opengpts-backend | ^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
opengpts-backend | return self._loop.run_until_complete(task)
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
opengpts-backend | return future.result()
opengpts-backend | ^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve
opengpts-backend | config.load()
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/config.py", line 467, in load
opengpts-backend | self.loaded_app = import_from_string(self.app)
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/importer.py", line 21, in import_from_string
opengpts-backend | module = importlib.import_module(module_str)
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "/usr/local/lib/python3.11/importlib/init.py", line 126, in import_module
opengpts-backend | return _bootstrap._gcd_import(name[level:], package, level)
opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend | File "
Update: I got the bots working (RAG and simple chat) if I comment out, them in tools.py in backend. I also made a small change in the makefile. Still trying: but here is the change:
tools.py in Backend:
class AvailableTools(str, Enum):
# ACTION_SERVER = "Action Server by Robocorp"
# DDG_SEARCH = "DDG Search"
# TAVILY = "Search (Tavily)"
# TAVILY_ANSWER = "Search (short answer, Tavily)"
# RETRIEVAL = "Retrieval"
# ARXIV = "Arxiv"
# YOU_SEARCH = "You.com Search"
# SEC_FILINGS = "SEC Filings (Kay.ai)"
# PRESS_RELEASES = "Press Releases (Kay.ai)"
# PUBMED = "PubMed"
WIKIPEDIA = "Wikipedia"
TOOLS = {
# AvailableTools.ACTION_SERVER: _get_action_server,
# AvailableTools.DDG_SEARCH: _get_duck_duck_go,
# AvailableTools.ARXIV: _get_arxiv,
# AvailableTools.YOU_SEARCH: _get_you_search,
# AvailableTools.SEC_FILINGS: _get_sec_filings,
# AvailableTools.PRESS_RELEASES: _get_press_releases,
# AvailableTools.PUBMED: _get_pubmed,
# AvailableTools.TAVILY: _get_tavily,
AvailableTools.WIKIPEDIA: _get_wikipedia,
# AvailableTools.TAVILY_ANSWER: _get_tavily_answer,
}
TOOL_OPTIONS = {e.value: e.value for e in AvailableTools}
The dockerfile in backend changed IP address:
ENTRYPOINT [ "uvicorn", "app.server:app", "--host", "172.18.0.4" ]
at least the bots are working. I will continue to check what is going on. If someone finds out, pl let us know!
Thanks @abhinandanshahdev - so now I have progress by adding to .env
(eg copying from .env-example
)
ROBOCORP_ACTION_SERVER_URL=https://dummy-action-server.robocorp.link
ROBOCORP_ACTION_SERVER_KEY=dummy-api-key
However new issues remain. UI renders but on a save I get
opengpts-frontend | ➜ Network: http://172.21.0.3:5173/
opengpts-backend | No UI directory found, serving API only.
opengpts-backend | INFO: Started server process [8]
opengpts-backend | INFO: Waiting for application startup.
opengpts-backend | INFO: Application startup complete.
opengpts-backend | INFO: 172.21.0.3:44840 - "GET /runs/config_schema HTTP/1.1" 200 OK
opengpts-backend | INFO: 172.21.0.3:44854 - "GET /threads/ HTTP/1.1" 422 Unprocessable Entity
opengpts-backend | INFO: 172.21.0.3:44864 - "GET /assistants/ HTTP/1.1" 422 Unprocessable Entity
opengpts-backend | INFO: 172.21.0.3:44880 - "GET /assistants/public/ HTTP/1.1" 200 OK
opengpts-backend | INFO: 172.21.0.3:45142 - "PUT /assistants/407845c4-1d48-4915-8e6e-f25d9b4243a8 HTTP/1.1" 422 Unprocessable Entity
Try adding all the env variables that are present in .env.example
, even if they are there as placeholders.
So you should have your OPENAI_API_KEY, and the rest you can use the same placeholders.
Try adding all the env variables that are present in
.env.example
, even if they are there as placeholders. So you should have your OPENAI_API_KEY, and the rest you can use the same placeholders.
Tried this, just rebased, .env
is a copy of .env.example
except for a correct OPENAI_API_KEY, performed a docker-compose up --build
and unfortunately, I'm still seeing this:
opengpts-frontend | ➜ Local: http://localhost:5173/
opengpts-frontend | ➜ Network: http://172.21.0.2:5173/
opengpts-backend | No UI directory found, serving API only.
opengpts-backend | INFO: Started server process [8]
opengpts-backend | INFO: Waiting for application startup.
opengpts-backend | INFO: Application startup complete.
opengpts-backend | INFO: 172.21.0.2:45438 - "GET /runs/config_schema HTTP/1.1" 200 OK
opengpts-backend | INFO: 172.21.0.2:45444 - "GET /threads/ HTTP/1.1" 422 Unprocessable Entity
opengpts-backend | INFO: 172.21.0.2:45450 - "GET /assistants/ HTTP/1.1" 422 Unprocessable Entity
opengpts-backend | INFO: 172.21.0.2:45432 - "GET /assistants/public/ HTTP/1.1" 200 OK
opengpts-backend | INFO: 172.21.0.2:55620 - "PUT /assistants/722cee00-53a6-4775-8dd7-c0b97853bff3 HTTP/1.1" 422 Unprocessable Entity
Which effectively means that the opening screen renders fine but I cannot create, or save Bots or Chats. When I have more time I'll dig deeper into these messages in particular:
opengpts-frontend | ➜ Local: http://localhost:5173/
opengpts-frontend | ➜ Network: http://172.21.0.2:5173/
opengpts-backend | No UI directory found, serving API only.
opengpts-backend | INFO: Started server process [8]
opengpts-backend | INFO: Waiting for application startup.
opengpts-backend | INFO: Application startup complete.
opengpts-backend | INFO: 172.21.0.2:45438 - "GET /runs/config_schema HTTP/1.1" 200 OK
opengpts-backend | INFO: 172.21.0.2:45444 - "GET /threads/ HTTP/1.1" 422 Unprocessable Entity
opengpts-backend | INFO: 172.21.0.2:45450 - "GET /assistants/ HTTP/1.1" 422 Unprocessable Entity
opengpts-backend | INFO: 172.21.0.2:45432 - "GET /assistants/public/ HTTP/1.1" 200 OK
opengpts-backend | INFO: 172.21.0.2:55620 - "PUT /assistants/722cee00-53a6-4775-8dd7-c0b97853bff3 HTTP/1.1" 422 Unprocessable Entity
I have same problem and I am waiting for the solution. Thank you!
Same here, the project doesnt work. Very frustrating.
Using .env.example copy, only replacing OpenAI_API_KEY.
opengpts-redis | 8:M 24 Feb 2024 14:30:19.426 * Server initialized opengpts-redis | 8:M 24 Feb 2024 14:30:19.426 * Ready to accept connections tcp opengpts-frontend | yarn run v1.22.19 opengpts-frontend | $ vite --host opengpts-backend | INFO: Will watch for changes in these directories: ['/backend'] opengpts-backend | INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) opengpts-backend | INFO: Started reloader process [1] using StatReload opengpts-frontend | opengpts-frontend | VITE v4.5.0 ready in 122 ms opengpts-frontend | opengpts-frontend | ➜ Local: http://localhost:5173/ opengpts-frontend | ➜ Network: http://172.19.0.3:5173/ opengpts-backend | Process SpawnProcess-1: opengpts-backend | Traceback (most recent call last): opengpts-backend | File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap opengpts-backend | self.run() opengpts-backend | File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run opengpts-backend | self._target(*self._args, **self._kwargs) opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_start ed opengpts-backend | target(sockets=sockets) opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run opengpts-backend | return asyncio.run(self.serve(sockets=sockets)) opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend | File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run opengpts-backend | return runner.run(main) opengpts-backend | ^^^^^^^^^^^^^^^^ opengpts-backend | File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run opengpts-backend | return self._loop.run_until_complete(task) opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend | File "/usr/local/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete opengpts-backend | return future.result() opengpts-backend | ^^^^^^^^^^^^^^^ opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve opengpts-backend | config.load() opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/config.py", line 467, in load opengpts-backend | self.loaded_app = import_from_string(self.app) opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend | File "/usr/local/lib/python3.11/site-packages/uvicorn/importer.py", line 21, in import_from_string opengpts-backend | module = importlib.import_module(module_str) opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend | File "/usr/local/lib/python3.11/importlib/init.py", line 126, in import_module opengpts-backend | return _bootstrap._gcd_import(name[level:], package, level) opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend | File "
", line 1204, in _gcd_import opengpts-backend | File " ", line 1176, in _find_and_load opengpts-backend | File " ", line 1147, in _find_and_load_unlocked opengpts-backend | File " ", line 690, in _load_unlocked opengpts-backend | File " ", line 940, in exec_module opengpts-backend | File " ", line 241, in _call_with_frames_removed opengpts-backend | File "/backend/app/server.py", line 9, in opengpts-backend | from app.api import router as api_router opengpts-backend | File "/backend/app/api/init.py", line 3, in opengpts-backend | from app.api.assistants import router as assistants_router opengpts-backend | File "/backend/app/api/assistants.py", line 7, in opengpts-backend | import app.storage as storage opengpts-backend | File "/backend/app/storage.py", line 10, in opengpts-backend | from app.agent import AgentType, get_agent_executor opengpts-backend | File "/backend/app/agent.py", line 200, in opengpts-backend | ConfigurableChatBot(llm=LLMType.GPT_35_TURBO, checkpoint=CHECKPOINTER) opengpts-backend | File "/backend/app/agent.py", line 189, in init opengpts-backend | chatbot = get_chatbot(llm, system_message) opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend | File "/backend/app/agent.py", line 155, in get_chatbot opengpts-backend | llm = get_openai_llm() opengpts-backend | ^^^^^^^^^^^^^^^^ opengpts-backend | File "/backend/app/llms.py", line 14, in get_openai_llm opengpts-backend | http_client = httpx.AsyncClient(proxies=proxy_url) opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend | File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1395, in init opengpts-backend | proxy_map = self._get_proxy_map(proxies, allow_env_proxies) opengpts-backend | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ opengpts-backend | File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 228, in _get_proxy_map opengpts-backend | proxy = Proxy(url=proxies) if isinstance(proxies, (str, URL)) else proxies opengpts-backend | ^^^^^^^^^^^^^^^^^^ opengpts-backend | File "/usr/local/lib/python3.11/site-packages/httpx/_config.py", line 334, in init opengpts-backend | raise ValueError(f"Unknown scheme for proxy URL {url!r}") opengpts-backend | ValueError: Unknown scheme for proxy URL URL('your_proxy_url') opengpts-frontend | 2:30:40 PM [vite] http proxy error at /threads/: opengpts-frontend | Error: connect ECONNREFUSED 172.19.0.4:8000 opengpts-frontend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) opengpts-frontend | 2:30:40 PM [vite] http proxy error at /assistants/public/: opengpts-frontend | Error: connect ECONNREFUSED 172.19.0.4:8000 opengpts-frontend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) opengpts-frontend | 2:30:40 PM [vite] http proxy error at /assistants/: opengpts-frontend | Error: connect ECONNREFUSED 172.19.0.4:8000 opengpts-frontend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16) opengpts-frontend | 2:30:40 PM [vite] http proxy error at /runs/config_schema: opengpts-frontend | Error: connect ECONNREFUSED 172.19.0.4:8000 opengpts-frontend | at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1278:16)
@felipeggrod try removing PROXY_URL=your_proxy_url
from your .env file. Worked for me.