cwi_gpt / complex_extractor_gpt.py
antonioFlavio's picture
Deploy
730eeaa
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