Spaces:
Sleeping
Sleeping
import os | |
from typing import Iterator | |
from dotenv import load_dotenv | |
from fastapi import APIRouter, Depends, Request | |
from langchain_huggingface import HuggingFaceEndpoint | |
from langchain_core.prompts import PromptTemplate | |
from libs.header_api_auth import get_api_key | |
from pydantic import BaseModel | |
from fastapi.responses import StreamingResponse | |
from langchain_ollama import ChatOllama, OllamaLLM | |
from libs.transformer.get_chat_gradio import get_chat_gradio | |
from libs.transformer.get_chat_transformer import get_chat_transformers | |
load_dotenv() | |
HUGGINGFACEHUB_API_TOKEN = os.getenv("HUGGINGFACEHUB_API_TOKEN", ) | |
os.environ["HUGGINGFACEHUB_API_TOKEN"] = HUGGINGFACEHUB_API_TOKEN | |
router = APIRouter(prefix="/get-chat-response", tags=["chat"]) | |
class ChatInputForm(BaseModel): | |
textInput: str | |
repo_id: str | |
prompt: str | |
async def get_chat_respone(body: ChatInputForm, api_key: str = Depends(get_api_key)): | |
prompt = get_prompt(body.prompt) | |
try: | |
llm = OllamaLLM( | |
model=body.repo_id, | |
temperature=0.2, | |
# huggingfacehub_api_token=HUGGINGFACEHUB_API_TOKEN, | |
) | |
messages = [ | |
("system", prompt), | |
("human", body.textInput) | |
] | |
messages = [ | |
{"role": "system", "content": prompt}, | |
{"role": "user", "content": body.textInput}, | |
] | |
response = llm.stream(messages) | |
# response = get_chat_gradio(body.textInput) | |
# response = get_chat_transformers(messages) | |
print(response) | |
return StreamingResponse(get_response(response), media_type='text/event-stream') | |
except Exception: | |
return {"success": False, "status": Exception} | |
def get_response(response: Iterator[str]): | |
for chunk in response: | |
yield chunk | |
checkWritting = """You'll be provided with a text. Convert the text to standard English. | |
--------------- | |
IMPORTANT: | |
- If the text is empty, do nothing. | |
- If the given text maintains grammatical accuracy, no suggestions are needed. | |
- If the given text is empty, do nothing. | |
- If the given text contains any errors in grammatical accuracy, provide the corrected text. | |
""" | |
template = """You are a helpful assistant. Do whatever user require. Response in markdown format.""" | |
baiGiang = """Provide the given phrase in English. Provide the correct and popularly used English phrase along with its American IPA pronunciation and a brief explanation for it. Use the correct English phrase to create 4 example sentences along with the example IPA and brief meanings. Finally, suggest 4 similar English phrases with the correct English version, along with American IPA and their brief meanings. | |
Provie your response in markdown format""" | |
def get_prompt(prompt: str): | |
prompts = { | |
'template' : template, | |
'checkWritting': checkWritting, | |
'baiGiang': baiGiang | |
} | |
return prompts.get('template', template) | |