Spaces:
Runtime error
Runtime error
from langchain.base_language import BaseLanguageModel | |
from langchain.chains import LLMChain, SequentialChain | |
from langchain.chat_models import ChatAnthropic | |
from langchain.chat_models import ChatOpenAI | |
from langchain.llms import HuggingFaceHub | |
from langchain.prompts import ( | |
PromptTemplate, | |
ChatPromptTemplate, | |
SystemMessagePromptTemplate, | |
HumanMessagePromptTemplate, | |
) | |
class GenerateStyleText: | |
example: str | |
prompt: str | |
llm: BaseLanguageModel | |
def __init__(self, example=None, prompt=None, llm=None): | |
self.example = example | |
self.prompt = prompt | |
self.llm = llm | |
def set_imp_llm(self, model): | |
if model == 'GPT3': | |
self.llm = ChatOpenAI(model_name="gpt-3.5-turbo-16k") | |
elif model == "GPT4": | |
self.llm = ChatOpenAI(model_name="gpt-4") | |
elif model == "Claude": | |
self.llm = ChatAnthropic() | |
else: | |
self.llm = HuggingFaceHub(repo_id=model) | |
def run(self): | |
return self.process() | |
def process(self): | |
seq_chain = SequentialChain( | |
chains=[self.get_extract_tone_chain(), self.get_generate_text_chain(self.prompt), | |
self.get_apply_style_chain()], | |
input_variables=["text"], verbose=True) | |
result = seq_chain({'text': self.example, "style": ""}) | |
return str(result.get('result')) | |
def create_chain(self, chat_prompt, output_key): | |
return LLMChain(llm=self.llm, | |
prompt=chat_prompt, output_key=output_key) | |
def get_extract_tone_chain(self): | |
template = """Based on the tone and writing style in the seed text, create a style guide for a blog or | |
publication that captures the essence of the seed’s tone. Emphasize engaging techniques that help readers | |
feel connected to the content. | |
""" | |
system_message_prompt = SystemMessagePromptTemplate.from_template(template) | |
human_template = "{text}" | |
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template) | |
chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt]) | |
return self.create_chain(chat_prompt, "style") | |
def get_generate_text_chain(self, prompt): | |
template = """Generate a text following the user_request(use same language of the request): | |
{user_request} | |
""".replace("{user_request}", prompt) | |
return self.create_chain(PromptTemplate.from_template(template), | |
"generated_text") | |
def get_apply_style_chain(self): | |
template = """STYLE: | |
{style} | |
REWRITE THE TEXT BELLOW APPLYING THE STYLE ABOVE(use same language of the request), | |
ONLY GENERATE NEW TEXT BASED ON THE STYLE CONTEXT, DO NOT COPY STYLE EXACT PARTS: | |
{generated_text} | |
""" | |
prompt = PromptTemplate.from_template(template=template) | |
prompt.partial(style="") | |
return self.create_chain(prompt, "result") | |