LLM FOO adalah proyek mutakhir yang memadukan seni kung fu dengan ilmu model bahasa besar ... atau sebenarnya ini adalah tentang secara otomatis membuat skema Openai Tool JSON, parsing call dan membangun hasilnya ke model obrolan. Dan kemudian ada utilitas kedua is_statement_true yang menggunakan jenius logit_bias trik yang hanya menggunakan satu token output.
Tapi hei saya harap ini akan menjadi satu set fungsi pembantu LLM kecil yang berguna yang akan membuat hal -hal membangun lebih mudah karena API tepi pendarahan saat ini sedikit berantakan dan saya pikir kita bisa melakukan yang lebih baik.

pip install llmfoo Anda perlu memiliki openai_api_key di env dan kemampuan untuk memanggil model gpt-4-1106-preview
is_statement_true harus mudah dimengerti. Buat beberapa pernyataan bahasa alami, dan periksa terhadap kriteria atau kebenaran umum. Anda mendapatkan kembali Boolean.
Fungsionalitas pdf2md yang baru diperkenalkan memungkinkan untuk konversi dokumen PDF menjadi format penurunan harga, membuatnya lebih mudah diproses dan diintegrasikan dengan sistem berbasis LLM. Fitur ini sangat berguna untuk mengekstraksi teks dan tabel dari PDF dan mengubahnya menjadi format yang lebih mudah dikelola.
pdftocairo harus diinstal pada sistem Anda untuk mengonversi halaman PDF menjadi gambar. from llmfoo . pdf2md import process_pdf
from pathlib import Path
pdf_path = Path ( "path/to/your/document.pdf" )
output_dir = Path ( "path/to/output/directory" )
# Process the PDF and generate Markdown
markdown_file = process_pdf ( pdf_path , output_dir )Fungsi ini akan memproses setiap halaman PDF, mencoba mengekstrak teks, angka dan tabel, dan mengubahnya menjadi file markdown di direktori output yang ditentukan.
@tool .openai_schema untuk mengembalikan skema (Anda dapat mengeditnya dari JSON jika Anda tidak senang dengan apa yang dilakukan mesin)openai_tool_call untuk melakukan panggilan alat dan mengembalikan hasilnya dalam format pesan API obrolanopenai_tool_output untuk melakukan panggilan alat dan mengembalikan hasilnya dalam format output alat API asisten from time import sleep
from openai import OpenAI
from llmfoo . functions import tool
from llmfoo import is_statement_true
def test_is_statement_true_with_default_criteria ():
assert is_statement_true ( "Earth is a planet." )
assert not is_statement_true ( "1 + 2 = 5" )
def test_is_statement_true_with_own_criteria ():
assert not is_statement_true ( "Temperature outside is -2 degrees celsius" ,
criteria = "Temperature above 0 degrees celsius" )
assert is_statement_true ( "1984 was written by George Orwell" ,
criteria = "George Orwell is the author of 1984" )
def test_is_statement_true_criteria_can_change_truth_value ():
assert is_statement_true ( "Earth is 3rd planet from the Sun" )
assert not is_statement_true ( "Earth is 3rd planet from the Sun" ,
criteria = "Earth is stated to be 5th planet from the Sun" )
@ tool
def adder ( x : int , y : int ) -> int :
return x + y
@ tool
def multiplier ( x : int , y : int ) -> int :
return x * y
client = OpenAI ()
def test_chat_completion_with_adder ():
number1 = 3267182746
number2 = 798472847
messages = [
{
"role" : "user" ,
"content" : f"What is { number1 } + { number2 } ?"
}
]
response = client . chat . completions . create (
model = "gpt-4-1106-preview" ,
messages = messages ,
tools = [ adder . openai_schema ]
)
messages . append ( response . choices [ 0 ]. message )
messages . append ( adder . openai_tool_call ( response . choices [ 0 ]. message . tool_calls [ 0 ]))
response2 = client . chat . completions . create (
model = "gpt-4-1106-preview" ,
messages = messages ,
tools = [ adder . openai_schema ]
)
assert str ( adder ( number1 , number2 )) in response2 . choices [ 0 ]. message . content . replace ( "," , "" )
def test_assistant_with_multiplier ():
number1 = 1238763428176
number2 = 172388743612
assistant = client . beta . assistants . create (
name = "The Calc Machina" ,
instructions = "You are a calculator with a funny pirate accent." ,
tools = [ multiplier . openai_schema ],
model = "gpt-4-1106-preview"
)
thread = client . beta . threads . create ( messages = [
{
"role" : "user" ,
"content" : f"What is { number1 } * { number2 } ?"
}
])
run = client . beta . threads . runs . create (
thread_id = thread . id ,
assistant_id = assistant . id
)
while True :
run_state = client . beta . threads . runs . retrieve (
run_id = run . id ,
thread_id = thread . id ,
)
if run_state . status not in [ 'in_progress' , 'requires_action' ]:
break
if run_state . status == 'requires_action' :
tool_call = run_state . required_action . submit_tool_outputs . tool_calls [ 0 ]
run = client . beta . threads . runs . submit_tool_outputs (
thread_id = thread . id ,
run_id = run . id ,
tool_outputs = [
multiplier . openai_tool_output ( tool_call )
]
)
sleep ( 1 )
sleep ( 0.1 )
messages = client . beta . threads . messages . list ( thread_id = thread . id )
assert str ( multiplier ( number1 , number2 )) in messages . data [ 0 ]. content [ 0 ]. text . value . replace ( "," , "" )Tertarik berkontribusi? Senang mendapatkan bantuan Anda untuk membuat proyek ini lebih baik! API di bawah sedang berubah dan sistem masih merupakan versi pertama yang sangat banyak.
Proyek ini dilisensikan di bawah lisensi MIT.