neuesql/sqlgptapp
1
1from abc import ABC, abstractmethod2from typing import List3from loguru import logger4import openai5 6 7class SQLService(ABC):8 9 @abstractmethod10 def translate(self, source_db: str, target_db: str, sql: str) -> List:11 ...12 13 14class OpenAIService(SQLService):15 16 def __init__(self, api_key) -> None:17 super().__init__()18 openai.api_key = api_key19 20 21 def translate(self, source_db: str, target_db: str, sql: str) -> List:22 results = []23 try:24 response = openai.Completion.create(25 model="text-davinci-003",26 prompt=f"##### Translate this function from Oracle into Postgresql\n"27 f"### {source_db}"28 f""29 f" {sql}"30 f""31 f"### {target_db}",32 temperature=0,33 max_tokens=2048,34 top_p=1,35 frequency_penalty=0,36 presence_penalty=0,37 stop=["###"]38 )39 for choice in response.choices:40 logger.info(f"transform {source_db} to {target_db}, SQL:")41 logger.debug(choice.text)42 results.append(choice.text)43 except Exception as ex:44 logger.error(f"transform from {source_db} to {target_db}, failed \n {sql}")45 logger.exception(ex)46 return results47 48 49class GoogleT5Service(SQLService):50 51 def translate(self, source_db: str, target_db: str, sql: str) -> List:52 return ["In Developing now"]53 54 def __init__(self):55 ...56 57 58class FacebookLLAMAService(SQLService):59 60 def translate(self, source_db: str, target_db: str, sql: str) -> List:61 return ["In facebook waiting list"]62 63 def __init__(self):64 ...65 