Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[Bug]: Azure Realtime #7654

Closed
ma-armenta opened this issue Jan 9, 2025 · 1 comment · Fixed by #7684
Closed

[Bug]: Azure Realtime #7654

ma-armenta opened this issue Jan 9, 2025 · 1 comment · Fixed by #7684
Assignees
Labels
bug Something isn't working mlops user request

Comments

@ma-armenta
Copy link

What happened?

Proxy keys give an authorization error, stating only proxy admin can create, delete or generate new keys/users/teams. But the api call is for inference to the realtime endpoint

Relevant log output

16:37:08 - LiteLLM Proxy:ERROR: user_api_key_auth.py:211 - 
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 1188, in user_api_key_auth
    _is_route_allowed = _is_allowed_route(
        route=route,
    ...<5 lines>...
        valid_token=valid_token,
    )
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 160, in _is_allowed_route
    return _is_api_route_allowed(
        route=route,
    ...<4 lines>...
        user_obj=user_obj,
    )
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 133, in _is_api_route_allowed
    RouteChecks.non_proxy_admin_allowed_routes_check(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        user_obj=user_obj,
        ^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
        valid_token=valid_token,
        ^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/route_checks.py", line 131, in non_proxy_admin_allowed_routes_check
    raise Exception(
        f"Only proxy admin can be used to generate, delete, update info for new keys/users/teams. Route={route}. Your role={user_role}. Your user_id={user_id}"
    )
Exception: Only proxy admin can be used to generate, delete, update info for new keys/users/teams. Route=/v1/realtime. Your role=unknown. Your user_id=unknown

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 209, in user_api_key_auth_websocket
    return await user_api_key_auth(request=request, api_key=f"Bearer {api_key}")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 1259, in user_api_key_auth
    raise ProxyException(
    ...<4 lines>...
    )
litellm.proxy._types.ProxyException
INFO:     ('10.3.38.15', 59510) - "WebSocket /v1/realtime?model=gpt-4o-realtime-preview" 403
ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 1188, in user_api_key_auth
    _is_route_allowed = _is_allowed_route(
        route=route,
    ...<5 lines>...
        valid_token=valid_token,
    )
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 160, in _is_allowed_route
    return _is_api_route_allowed(
        route=route,
    ...<4 lines>...
        user_obj=user_obj,
    )
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 133, in _is_api_route_allowed
    RouteChecks.non_proxy_admin_allowed_routes_check(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        user_obj=user_obj,
        ^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
        valid_token=valid_token,
        ^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/route_checks.py", line 131, in non_proxy_admin_allowed_routes_check
    raise Exception(
        f"Only proxy admin can be used to generate, delete, update info for new keys/users/teams. Route={route}. Your role={user_role}. Your user_id={user_id}"
    )
Exception: Only proxy admin can be used to generate, delete, update info for new keys/users/teams. Route=/v1/realtime. Your role=unknown. Your user_id=unknown

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 209, in user_api_key_auth_websocket
    return await user_api_key_auth(request=request, api_key=f"Bearer {api_key}")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 1259, in user_api_key_auth
    raise ProxyException(
    ...<4 lines>...
    )
litellm.proxy._types.ProxyException

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/lib/python3.13/site-packages/starlette/routing.py", line 93, in app
    await func(session)
  File "/usr/lib/python3.13/site-packages/fastapi/routing.py", line 371, in app
    solved_result = await solve_dependencies(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
    )
    ^
  File "/usr/lib/python3.13/site-packages/fastapi/dependencies/utils.py", line 638, in solve_dependencies
    solved = await call(**solved_result.values)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/litellm/proxy/auth/user_api_key_auth.py", line 213, in user_api_key_auth_websocket
    raise HTTPException(status_code=403, detail=str(e))
fastapi.exceptions.HTTPException: 403: 

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 240, in run_asgi
    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/uvicorn/middleware/proxy_headers.py", line 69, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/starlette/middleware/errors.py", line 152, in __call__
    await self.app(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/starlette/middleware/cors.py", line 77, in __call__
    await self.app(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/lib/python3.13/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/lib/python3.13/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/starlette/routing.py", line 362, in handle
    await self.app(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/starlette/routing.py", line 95, in app
    await wrap_app_handling_exceptions(app, session)(scope, receive, send)
  File "/usr/lib/python3.13/site-packages/starlette/_exception_handler.py", line 63, in wrapped_app
    await response(scope, receive, sender)
  File "/usr/lib/python3.13/site-packages/starlette/responses.py", line 148, in __call__
    await send(
    ...<5 lines>...
    )
  File "/usr/lib/python3.13/site-packages/starlette/_exception_handler.py", line 39, in sender
    await send(message)
  File "/usr/lib/python3.13/site-packages/starlette/_exception_handler.py", line 39, in sender
    await send(message)
  File "/usr/lib/python3.13/site-packages/uvicorn/protocols/websockets/websockets_impl.py", line 355, in asgi_send
    raise RuntimeError(msg % message_type)
RuntimeError: Expected ASGI message 'websocket.http.response.body' but got 'websocket.http.response.start'.
INFO:     connection failed (403 Forbidden)
INFO:     connection closed

Are you a ML Ops Team?

Yes

What LiteLLM version are you on ?

v1.57.4

Twitter / LinkedIn details

https://www.linkedin.com/in/maarmenta/

@ma-armenta ma-armenta added the bug Something isn't working label Jan 9, 2025
@ishaan-jaff ishaan-jaff self-assigned this Jan 11, 2025
@ishaan-jaff
Copy link
Contributor

working on a fix

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

Successfully merging a pull request may close this issue.

2 participants