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) | |