kevinkal commited on
Commit
4961041
·
verified ·
1 Parent(s): 0c1a62b

Update app.py with mistralai streaming api

Browse files
Files changed (1) hide show
  1. app.py +31 -2
app.py CHANGED
@@ -1,7 +1,36 @@
1
- from fastapi import FastAPI
 
 
 
 
2
 
3
  app = FastAPI()
4
 
 
 
 
5
  @app.get("/")
6
  def hello():
7
- return {"Hello": "World!"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, Depends
2
+ from fastapi.responses import StreamingResponse
3
+ from pydantic import BaseModel, Annotated
4
+ from mistralai import Mistral
5
+ import os
6
 
7
  app = FastAPI()
8
 
9
+ mistral = os.environ.get('MISTRAL_KEY', '')
10
+ mistral_client = Mistral(api_key=mistral)
11
+
12
  @app.get("/")
13
  def hello():
14
+ return {"Hello": "World!"}
15
+
16
+ class MistralRequest(BaseModel):
17
+ model: str
18
+ prompt: str
19
+
20
+ @app.post("/mistral")
21
+ async def mistral(request: MistralRequest, token: Annotated[str, Depends(verify_token)]
22
+ async def generate():
23
+ response = await mistral_client.chat.stream_async(
24
+ model=request.model,
25
+ messages=[
26
+ {
27
+ "role": "user",
28
+ "content": request.prompt,
29
+ }
30
+ ],
31
+ )
32
+ async for chunk in response:
33
+ if chunk.data.choices[0].delta.content is not None:
34
+ yield chunk.data.choices[0].delta.content
35
+
36
+ return StreamingResponse(generate(), media_type="text/plain")