moamen270 commited on
Commit
35d085e
·
1 Parent(s): c9112a1

Upload 3 files

Browse files
Files changed (3) hide show
  1. Dockerfile +26 -0
  2. endpoints.py +80 -0
  3. requirements-fastapi.txt +15 -0
Dockerfile ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.7
2
+
3
+ WORKDIR /code
4
+
5
+ COPY requirements-fastapi.txt ./
6
+
7
+ # Installing libGL
8
+ RUN apt-get update && apt-get install -y \
9
+ libgl1-mesa-dev
10
+
11
+ RUN apt-get install -y poppler-utils libpoppler-cpp-dev
12
+
13
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements-fastapi.txt
14
+
15
+ RUN useradd -m -u 1000 user
16
+
17
+ USER user
18
+
19
+ ENV HOME=/home/user \
20
+ PATH=/home/user/.local/bin:$PATH
21
+
22
+ WORKDIR $HOME/app
23
+
24
+ COPY --chown=user . $HOME/app/
25
+
26
+ CMD ["uvicorn", "endpoints:app", "--host", "0.0.0.0", "--port", "7860"]
endpoints.py ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from fastapi.middleware.cors import CORSMiddleware
3
+ from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
4
+ import torch
5
+ import os
6
+ import requests
7
+ # from langchain.llms.huggingface_pipeline import HuggingFacePipeline
8
+
9
+ key = os.environ.get("huggingface_key")
10
+ openai_api_key = os.environ.get("openai_key")
11
+ app = FastAPI(openapi_url="/api/v1/sparrow-data/openapi.json", docs_url="/api/v1/sparrow-data/docs")
12
+
13
+ app.add_middleware(
14
+ CORSMiddleware,
15
+ allow_origins=["*"],
16
+ allow_methods=["*"],
17
+ allow_headers=["*"],
18
+ allow_credentials=True,
19
+ )
20
+ API_URL = "https://api-inference.huggingface.co/models/mistralai/Mistral-7B-v0.1"
21
+ headers = {"Authorization": f"Bearer {key}"}
22
+
23
+ def query(payload):
24
+ response = requests.post(API_URL, headers=headers, json=payload)
25
+ return response.json()
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+ tokenizer = AutoTokenizer.from_pretrained("WizardLM/WizardCoder-1B-V1.0")
34
+ base_model = AutoModelForCausalLM.from_pretrained("WizardLM/WizardCoder-1B-V1.0")
35
+
36
+ pipe = pipeline("text-generation",
37
+ model=base_model,
38
+ tokenizer=tokenizer,
39
+ max_length=4000,
40
+ do_sample=True,
41
+ top_p=0.95,
42
+ repetition_penalty=1.2,
43
+ )
44
+ # hf_llm = HuggingFacePipeline(pipeline=pipe)
45
+
46
+
47
+ @app.get("/")
48
+ def root():
49
+ return {"message": "R&D LLM API"}
50
+ @app.get("/get")
51
+ def get():
52
+ result = pipe("name 5 programming languages",do_sample=False)
53
+ print(result)
54
+ return {"message": result}
55
+
56
+
57
+ async def askLLM(prompt):
58
+ output = pipe(prompt,do_sample=False)
59
+ return output
60
+
61
+ @app.post("/ask_llm")
62
+ async def ask_llm_endpoint(prompt: str):
63
+ # result = await askLLM(prompt)
64
+ result = pipe(prompt,do_sample=False)
65
+ return {"result": result}
66
+
67
+
68
+ @app.post("/ask_HFAPI")
69
+ def ask_HFAPI_endpoint(prompt: str):
70
+ result = query(prompt)
71
+ return {"result": result}
72
+
73
+ from langchain.llms import OpenAI
74
+
75
+ llm = OpenAI(model_name="text-davinci-003", temperature=0.5, openai_api_key=openai_api_key)
76
+
77
+ @app.post("/ask_GPT")
78
+ def ask_GPT_endpoint(prompt: str):
79
+ result = llm(prompt)
80
+ return {"result": result}
requirements-fastapi.txt ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ python-poppler==0.4.1
2
+ fastapi==0.96.0
3
+ python-multipart
4
+ motor==3.1.2
5
+ pydantic==1.10.8
6
+ pycryptodome==3.18.0
7
+ uvicorn[standard]
8
+ langchain
9
+ transformers
10
+ torch
11
+ requests
12
+ openai==0.27.8
13
+ sentencepiece==0.1.99
14
+ accelerate==0.19.0
15
+ bitsandbytes==0.39.0