Created
March 2, 2024 21:33
-
-
Save cfcosta/b44be7a928cc63dcd52041eb575f96cc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from dspy import InputField, OutputField, Signature, evaluate, ChainOfThought, Example, Module | |
from dspy.teleprompt.bootstrap import BootstrapFewShot | |
class Extract(Signature): | |
"""Extract the information from a given text using a json schema.""" | |
input_text = InputField(desc="the text to extract information from") | |
json_schema = InputField(desc="the schema to use to extract the information") | |
output = OutputField(desc="the extracted information") | |
examples = [ | |
Example( | |
input_text="Emissão de cotas seniores da 1ª (primeira) série, 1ª (primeira) emissão de cotas subordinadas mezanino e 1ª (primeira) emissão de cotas subordinadas júnior do AUTO LOANS FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS, inscrito no Cadastro Nacional da Pessoa Jurídica do Ministério da Economia (“CNPJ/ME”) sob o nº 40.794.358/0001-58 (“Fundo”, “Cotas Seniores”, “Cotas Subordinadas Mezanino” e “Cotas Subordinadas Júnior”, respectivamente), administrado pela BRL TRUST DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS S.A., sociedade devidamente autorizada a funcionar pelo Banco Central do Brasil e autorizada pela Comissão de Valores Mobiliários (“CVM”) para o exercício profissional de administração de carteiras de valores mobiliários e fundos de investimentos, nos termos do Ato Declaratório CVM nº 11.784, de 30 de junho de 2011, com sede na cidade de São Paulo, Estado de São Paulo, na Rua Iguatemi, nº 151, 19º andar (parte), CEP 01451-011, inscrita no CNPJ/ME sob o nº 13.486.793/0001-42, neste ato representada nos termos do seu estatuto social (“Administradora”), composta por, (i) no máximo, 70.000.000 (setenta milhões), e, no mínimo, 35.000.000 (trinta e cinco milhões) de Cotas Seniores, com valor inicial unitário de R$1,00 (um real) cada, totalizando o montante de até R$70.000.000,00 (setenta milhões de reais) e de, no mínimo, R$35.000.000,00 (trinta e cinco milhões de reais) (“Montante Mínimo das Cotas Seniores”), (ii) no máximo, 15.000.000 (quinze milhões), e, no mínimo, 7.500.000 (sete milhões e quinhentas mil) Cotas Subordinadas Mezanino, com valor inicial unitário de R$1,00 (um real) cada, totalizando o montante de até R$15.000.000,00 (quinze milhões de reais) e de, no mínimo, R$7.500.000,00 (sete milhões e quinhentos mil reais) (“Montante Mínimo das Cotas Subordinadas Mezanino”), e (iii) 15.000.000 (quinze milhões) de Cotas Subordinadas Júnior, no valor inicial unitário de R$1,00 (um real), totalizando o montante de R$15.000.000,00 (quinze milhões de reais), distribuídas por meio de oferta pública com esforços restritos de colocação (“Oferta Restrita”), nos termos da Instrução CVM nº 476, de 19 de janeiro de 2009, conforme alterada (“Instrução CVM 476”).", | |
json_schema='{"$schema":"http://json-schema.org/draft-04/schema#","type":"object","properties":{"fund":{"type":"object","properties":{"name":{"type":"string"},"cnpj":{"type":"string"},"shares":{"type":"array","items":[{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"object","properties":{"min":{"type":"integer"},"max":{"type":"integer"}},"required":["min","max"]},"valuePerShare":{"type":"integer"}},"required":["name","quantity","valuePerShare"]},{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"object","properties":{"min":{"type":"integer"},"max":{"type":"integer"}},"required":["min","max"]},"valuePerShare":{"type":"integer"}},"required":["name","quantity","valuePerShare"]},{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"integer"},"valuePerShare":{"type":"integer"}},"required":["name","quantity","valuePerShare"]}]}},"required":["name","cnpj","shares"]},"administrator":{"type":"array","items":[{"type":"object","properties":{"name":{"type":"string"},"cnpj":{"type":"string"},"address":{"type":"object","properties":{"street":{"type":"string"},"number":{"type":"string"},"complement":{"type":"string"},"neighborhood":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zipcode":{"type":"string"}},"required":["street","number","complement","neighborhood","city","state","zipcode"]}},"required":["name","cnpj","address"]}]}},"required":["fund","administrator"]}', | |
output='{"fund":{"name":"AUTO LOANS FUNDO DE INVESTIMENTO EM DIREITOS CREDITÓRIOS","cnpj":"40.794.358/0001-58","shares":[ {"name":"Cotas Seniores","quantity":{"min":35000000,"max":70000000},"valuePerShare":1},{"name":"Cotas Subordinadas Mezanino","quantity":{"min":7500000,"max":15000000},"valuePerShare":1},{"name":"Cotas Subordinadas Júnior","quantity":15000000,"valuePerShare":1}]},"administrator":[ {"name":"VÓRTX DISTRIBUIDORA DE TÍTULOS E VALORES MOBILIÁRIOS","cnpj":"22.610.500/0001-88","address":{"street":"Rua Gilberto Sabino","number":"215","complement":"4º andar","neighborhood":"Pinheiros","city":"São Paulo","state":"São Paulo","zipcode":"05425-020"}}]}' | |
) | |
] | |
class Compiled(Module): | |
def __init__(self, model): | |
self.model = ChainOfThought(model) | |
def forward(self, **kwargs): | |
return self.model(**kwargs) | |
def few_shot_compile(input, dataset=None, metric=_validate): | |
teleprompter = BootstrapFewShot( | |
metric=metric, | |
max_rounds=8, | |
max_bootstrapped_demos=3, | |
max_labeled_demos=3, | |
) | |
return teleprompter.compile(Compiled(input), trainset=dataset) | |
def extract(): | |
return few_shot_compile( | |
Extract, | |
dataset=examples, | |
metric=lambda a, b, _: evaluate.answer_exact_match_str(a.output, [b.output]), | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment