from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline import torch import os import requests # from langchain.llms.huggingface_pipeline import HuggingFacePipeline # API_URL = "https://api-inference.huggingface.co/models/mistralai/Mistral-7B-v0.1" # headers = {"Authorization": f"Bearer {key}"} # def query(payload): # response = requests.post(API_URL, headers=headers, json=payload) # return response.json() def LLM(llm_name, length): print(llm_name) tokenizer = AutoTokenizer.from_pretrained(llm_name) model = AutoModelForCausalLM.from_pretrained(llm_name,trust_remote_code=True) pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_length=length, do_sample=True, top_p=0.95, repetition_penalty=1.2, ) return pipe # tokenizer = AutoTokenizer.from_pretrained("WizardLM/WizardCoder-1B-V1.0") # base_model = AutoModelForCausalLM.from_pretrained("WizardLM/WizardCoder-1B-V1.0") # Mistral 7B # mistral_llm = LLM("mistralai/Mistral-7B-v0.1",30000) # mistral_llm = LLM("microsoft/phi-2",2000) # WizardCoder 13B # wizard_llm = LLM("WizardLM/WizardCoder-Python-13B-V1.0",8000) wizard_llm = LLM("WizardLM/WizardCoder-1B-V1.0",4000) # hf_llm = HuggingFacePipeline(pipeline=pipe) def ask_model(model, prompt): # if(model == 'mistral'): # result = mistral_llm(prompt) # return result if(model == 'wizard'): result = wizard_llm(prompt) return result key = os.environ.get("huggingface_key") openai_api_key = os.environ.get("openai_key") app = FastAPI(openapi_url="/api/v1/LLM/openapi.json", docs_url="/api/v1/LLM/docs") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], allow_credentials=True, ) @app.get("/") def root(): return {"message": "R&D LLM API"} # @app.get("/get") # def get(): # result = pipe("name 5 programming languages",do_sample=False) # print(result) # return {"message": result} @app.post("/ask_llm") async def ask_llm_endpoint(model:str, prompt: str): result = ask_model(model,prompt) return {"result": result} # APIs # @app.post("/ask_HFAPI") # def ask_HFAPI_endpoint(prompt: str): # result = query(prompt) # return {"result": result} from langchain.llms import OpenAI llm = OpenAI(model_name="text-davinci-003", temperature=0.5, openai_api_key=openai_api_key) @app.post("/ask_GPT") def ask_GPT_endpoint(prompt: str): result = llm(prompt) return {"result": result}