Spaces:
Sleeping
Sleeping
| import os | |
| from typing import List | |
| from pydantic import BaseModel, Field | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain.prompts import ChatPromptTemplate | |
| from langchain.utils.openai_functions import convert_pydantic_to_openai_function | |
| from langchain.output_parsers.openai_functions import JsonKeyOutputFunctionsParser | |
| OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") | |
| class PalavraComplexa(BaseModel): | |
| """Informações de uma palavra complexa.""" | |
| palavra_complexa: str = Field(description="palavra complexa") | |
| palavra_substituta: str = Field(description="substituto da palavra complexa") | |
| class Informacao(BaseModel): | |
| """Lista de palavras complexas para extrair a informação.""" | |
| palavras: List[PalavraComplexa] = Field(description="Lista de informações de palavras complexas") | |
| def extrair_complex_words(template, texto): | |
| model = ChatOpenAI(openai_api_key=OPENAI_API_KEY) | |
| extraction_functions = [convert_pydantic_to_openai_function(Informacao)] | |
| extraction_model = model.bind(functions=extraction_functions, function_call={"name":"Informacao"}) | |
| prompt_step = ChatPromptTemplate.from_template(template) | |
| extraction_chain_model = prompt_step | extraction_model | JsonKeyOutputFunctionsParser(key_name="palavras") | |
| retorno = extraction_chain_model.invoke({"trecho": texto}) | |
| return retorno |