| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline | |
| import torch | |
| import os | |
| import requests | |
| # from pydantic import BaseModel | |
| # from langchain.llms.huggingface_pipeline import HuggingFacePipeline | |
| key = os.environ.get("huggingface_key") | |
| openai_api_key = os.environ.get("openai_key") | |
| app = FastAPI(openapi_url="/api/v1/sparrow-data/openapi.json", docs_url="/api/v1/sparrow-data/docs") | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| allow_credentials=True, | |
| ) | |
| # 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() | |
| # from fastapi import FastAPI, HTTPException, Body | |
| # from transformers import GPT2LMHeadModel, GPT2Tokenizer | |
| # model = GPT2LMHeadModel.from_pretrained("EleutherAI/gpt-neo-2.7B") | |
| # tokenizer = GPT2Tokenizer.from_pretrained("EleutherAI/gpt-neo-2.7B") | |
| tokenizer = AutoTokenizer.from_pretrained("WizardLM/WizardCoder-1B-V1.0") | |
| model = AutoModelForCausalLM.from_pretrained("WizardLM/WizardCoder-1B-V1.0") | |
| pipe = pipeline("text-generation", | |
| model=model, | |
| tokenizer=tokenizer, | |
| max_length=4000, | |
| do_sample=True, | |
| top_p=0.95, | |
| repetition_penalty=1.2, | |
| ) | |
| # hf_llm = HuggingFacePipeline(pipeline=pipe) | |
| # class ChatRequest(BaseModel): | |
| # messages: list | |
| # temperature: float = 1.0 | |
| # max_tokens: int = 50 | |
| # stream: bool = False | |
| # class ChatResponse(BaseModel): | |
| # response: str | |
| # @app.post("/v1/chat/completions", response_model=ChatResponse) | |
| # async def chat_completions(request: ChatRequest): | |
| # try: | |
| # # Prepare input prompt | |
| # input_prompt = "" | |
| # for message in request.messages: | |
| # role = message.get('role', 'user') | |
| # content = message.get('content', '') | |
| # input_prompt += f"{role}: {content}\n" | |
| # # Tokenize and generate response | |
| # input_ids = tokenizer.encode(input_prompt, return_tensors='pt') | |
| # output = model.generate(input_ids, max_length=1024, temperature=request.temperature, max_tokens=request.max_tokens) | |
| # # Decode and send response | |
| # response = tokenizer.decode(output[0], skip_special_tokens=True) | |
| # return {"response": response} | |
| # except Exception as e: | |
| # raise HTTPException(status_code=500, detail=str(e)) | |
| 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} | |
| async def askLLM(prompt): | |
| output = pipe(prompt,do_sample=False) | |
| return output | |
| async def ask_llm_endpoint(prompt: str): | |
| # result = await askLLM(prompt) | |
| result = pipe(prompt,do_sample=False) | |
| return {"result": result} | |
| # @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} |