Essa implementação do LogicGuide é trazida a você por Agora, estamos dedicados ao avanço da humanidade com a pesquisa significativa de código aberto da IA
Junte -se à nossa discórdia para ajudar a contribuir com este projeto ou mais de 40 outros projetos
O link de papel está aqui
O LogicGuide é um complemento inovador que pode ser conectado a qualquer modelo para aumentar seus recursos de raciocínio lógico em 40%. O LogicGuide foi projetado para permitir que seu modelo aproveite o poder dos algoritmos e funções avançados de raciocínio lógico, permitindo que ele gere respostas mais precisas, sensatas e significativas. É tão simples quanto plug and play!
Primeiro, clone este repositório:
git clone https://github.com/kyegomez/LOGICGUIDE.git
cd LOGICGUIDE
Em seguida, instale as dependências necessárias:
pip install -r requirements.txt
Abaixo está o guia de uso para o LogicGuide:
from logicguide import MemoryGuide , QuoteGuide , AlgebraGuide , LogicGuide ,
model_id = "tiiuae/falcon-40b"
device = "cuda:0" # Change to "cpu" if you don't have a CUDA-compatible GPU.
# Memory Guide
memory_guide = MemoryGuide ()
logic_guide = LogicGuide ( model_id = model_id , guide_function = memory_guide , device = device )
text = "[[set:name=OpenAI]] What is your name?"
print ( logic_guide . generate ( text )) # Output: "My name is OpenAI."
text = "[[get:name=]] What is your name?"
print ( logic_guide . generate ( text )) # Output: "My name is OpenAI."
# Quote Guide (for this example, we're using Project Gutenberg's "The Adventures of Sherlock Holmes")
quote_guide = QuoteGuide ( source = "https://www.gutenberg.org/files/1661/1661-h/1661-h.htm" )
logic_guide = LogicGuide ( model_id = model_id , guide_function = quote_guide , device = device )
text = "[[quote:]] What is a quote from Sherlock Holmes?"
print ( logic_guide . generate ( text )) # Output: A quote from "The Adventures of Sherlock Holmes" (random quote from the source)
# Algebra Guide
algebra_guide = AlgebraGuide ()
logic_guide = LogicGuide ( model_id = model_id , guide_function = algebra_guide , device = device )
text = "[[eq]] x^2 + 3x + 2 = 0"
print ( logic_guide . generate ( text )) # Output: "x^2 + 3x + 2 = 0" (and stores the equation for later)
text = "[[solve:x=]] What is the value of x?"
print ( logic_guide . generate ( text )) # Output: "The value of x is ..." (the solutions of the equation)
Adoramos sua opinião! Queremos fazer contribuir com o LogicGuide o mais fácil e transparente possível. Confira nosso guia contribuinte para obter mais informações.
Estabelecer meta -funções de contexto formalizado que aumentam a resposta da base LLM
Estabelecer uma suíte de teste de benchmark de papéis
Estabelecer mais funções de guia
O LogicGuide é liberado sob a licença do MIT. Consulte o arquivo de licença para obter mais detalhes.
Nota: O LogicGuide foi criado e é mantido por Kye Gomez.
Esta é uma classe de guia básica que não altera a entrada.
Métodos
__call__(self, history)
: Quando a instância da classe é chamada como uma função, ele simplesmente retorna o history
de string de entrada inalterado. Esta classe de guia foi projetada para interagir com operações relacionadas a dígitos na sequência de entrada.
Métodos
__init__(self)
: No método de inicialização, é criado um objeto de expressão regular que corresponde a um ou mais dígitos.__call__(self, history)
: se o history
da string de entrada corresponde à expressão regular (ou seja, é uma sequência de dígitos), o método retorna o objeto de expressão regular. Caso contrário, ele não retorna nenhum. Esta é uma classe para criar funções de guia com base em uma ferramenta fornecida.
Métodos
__init__(self, tool)
: o método de inicialização aceita um objeto tool
armazenado para uso posterior.__call__(self, model_output)
: Quando a instância é chamada de função com model_output
como argumento, ele aplica o método tool_check
do objeto tool
para model_output
. Esta função é usada para verificar a paridade de uma corda binária.
binary_string
: Esta função toma uma string binária como argumento.1
Se a sequência binária tiver um número par de 1 (pertencente ao idioma da paridade) e 0
se não o fizer. Essas classes foram projetadas para fornecer uma verificação lógica e uma verificação de fatos no texto de entrada, respectivamente.
Métodos
check(self, text)
: esses métodos aceitam um text
de string como entrada e retorna true. Em uma implementação completa, esses métodos usariam sistemas lógicos complexos, análise semântica, sistemas de inferência lógica e sistemas de verificação de fatos para verificar a consistência lógica e a precisão factual do texto. Esta classe atua como um gerenciador de memória, armazenando e recuperando valores com base em certos gatilhos na sequência de entrada.
Métodos
__init__(self)
: No método de inicialização, um dicionário vazio é criado para atuar como o armazenamento de memória.__call__(self, history)
: Este método modifica o history
da string de entrada com base no conjunto de memória/get gatilhos. Esta classe busca citações de um URL de origem e permite a substituição de um gatilho de cotação no texto de entrada com uma cotação da fonte.
Métodos
__init__(self, source)
: o método de inicialização aceita um URL de origem e armazena uma lista de citações obtidas na fonte.get_quotes_from_source(self)
: esse método busca todos os parágrafos da página de origem e os retorna como uma lista.__call__(self, history)
: Este método substitui um gatilho de cotação no history
da string de entrada por uma cotação da fonte. Esta classe interage com equações algébricas na sequência de entrada.
Métodos
__init__(self)
: O método de inicialização cria um dicionário vazio para armazenar pares de símbolos variáveis.__call__(self, history)
: Este método interage com o history
da string de entrada com base na equação e resolve gatilhos. Esta classe atua como o principal guia lógico que usa a biblioteca de Transformers de Face Hugging para gerar respostas com base em uma função de guia.
Métodos
__init__(self, model_id, guide_function=None, device="cuda:0")
: o método de inicialização configura o modelo e o tokenizador dos transformadores com base em model_id
e define a função do guia para guide_function
ou um Função padrão se guide_function
não for.
default_guide_function(self, S)
: Este método retorna a sequência de entrada S
inalterada.get_bnb_config(self)
: Este método retorna um objeto BitsAndBytesConfig
para quantização do modelo.guide(self, S)
: Este método aplica a função do guia à string de entrada S
.get_blocks(self, s)
: Este método retorna uma lista de todos os blocos de guia na sequência de entrada s
.generate(self, text, max_new_tokens=20)
: Este método gera uma resposta com base no text
da string de entrada, usando o modelo Transformers e aplicando a função do guia, se necessário. O exemplo de uso mostra como usar a classe LogicGuide
com um modelo de transformadores específico. Ele gera uma resposta à entrada "Qual é a sua teoria de tudo?" Usando o comportamento padrão do modelo, pois nenhuma função de guia é fornecida.