Niansuh commited on
Commit
0f5b5b1
·
verified ·
1 Parent(s): 76e848a

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +11 -11
main.py CHANGED
@@ -6,9 +6,7 @@ import uuid
6
  import json
7
  import logging
8
  import asyncio
9
- import time
10
  import contextvars
11
- from collections import defaultdict
12
  from typing import List, Dict, Any, Optional, AsyncGenerator, Union
13
  from datetime import datetime
14
 
@@ -19,7 +17,7 @@ from slowapi.middleware import SlowAPIMiddleware
19
  from fastapi import FastAPI, HTTPException, Request, Depends, Security
20
  from fastapi.responses import StreamingResponse, JSONResponse, RedirectResponse
21
  from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
22
- from pydantic import BaseModel
23
 
24
  from aiohttp import ClientSession, ClientTimeout, ClientError
25
 
@@ -456,18 +454,19 @@ async def security_middleware(request: Request, call_next):
456
  class Message(BaseModel):
457
  role: str
458
  content: str
 
459
 
460
  class ChatRequest(BaseModel):
461
  model: str
462
  messages: List[Message]
463
- temperature: Optional[float] = 1.0
464
- top_p: Optional[float] = 1.0
465
- n: Optional[int] = 1
466
  stream: Optional[bool] = False
467
  stop: Optional[Union[str, List[str]]] = None
468
- max_tokens: Optional[int] = None
469
- presence_penalty: Optional[float] = 0.0
470
- frequency_penalty: Optional[float] = 0.0
471
  logit_bias: Optional[Dict[str, float]] = None
472
  user: Optional[str] = None
473
  webSearchMode: Optional[bool] = False # Custom parameter
@@ -494,6 +493,9 @@ async def chat_completions(
494
  req: Request,
495
  api_key: str = Depends(get_api_key)
496
  ):
 
 
 
497
  # Redact user messages only for logging purposes
498
  redacted_messages = [{"role": msg.role, "content": "[redacted]"} for msg in request.messages]
499
 
@@ -576,8 +578,6 @@ async def chat_completions(
576
  logger.exception("An unexpected error occurred while processing the chat completions request.")
577
  raise HTTPException(status_code=500, detail=str(e))
578
 
579
- # Removed the /v1/completions endpoint as per user request
580
-
581
  # Return 'about:blank' when accessing the endpoint via GET
582
  @app.get("/v1/chat/completions")
583
  async def chat_completions_get():
 
6
  import json
7
  import logging
8
  import asyncio
 
9
  import contextvars
 
10
  from typing import List, Dict, Any, Optional, AsyncGenerator, Union
11
  from datetime import datetime
12
 
 
17
  from fastapi import FastAPI, HTTPException, Request, Depends, Security
18
  from fastapi.responses import StreamingResponse, JSONResponse, RedirectResponse
19
  from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
20
+ from pydantic import BaseModel, Field
21
 
22
  from aiohttp import ClientSession, ClientTimeout, ClientError
23
 
 
454
  class Message(BaseModel):
455
  role: str
456
  content: str
457
+ name: Optional[str] = None # Optional field as per OpenAI's API
458
 
459
  class ChatRequest(BaseModel):
460
  model: str
461
  messages: List[Message]
462
+ temperature: Optional[float] = Field(1.0, ge=0.0, le=2.0)
463
+ top_p: Optional[float] = Field(1.0, ge=0.0, le=1.0)
464
+ n: Optional[int] = Field(1, ge=1, le=10)
465
  stream: Optional[bool] = False
466
  stop: Optional[Union[str, List[str]]] = None
467
+ max_tokens: Optional[int] = Field(None, ge=1, le=4096)
468
+ presence_penalty: Optional[float] = Field(0.0, ge=-2.0, le=2.0)
469
+ frequency_penalty: Optional[float] = Field(0.0, ge=-2.0, le=2.0)
470
  logit_bias: Optional[Dict[str, float]] = None
471
  user: Optional[str] = None
472
  webSearchMode: Optional[bool] = False # Custom parameter
 
493
  req: Request,
494
  api_key: str = Depends(get_api_key)
495
  ):
496
+ """
497
+ Handles the /v1/chat/completions endpoint, emulating OpenAI's API.
498
+ """
499
  # Redact user messages only for logging purposes
500
  redacted_messages = [{"role": msg.role, "content": "[redacted]"} for msg in request.messages]
501
 
 
578
  logger.exception("An unexpected error occurred while processing the chat completions request.")
579
  raise HTTPException(status_code=500, detail=str(e))
580
 
 
 
581
  # Return 'about:blank' when accessing the endpoint via GET
582
  @app.get("/v1/chat/completions")
583
  async def chat_completions_get():