LLM FOO هو مشروع متطور يمزج فن الكونغ فو مع علم نماذج اللغة الكبيرة ... أو في الواقع ، يتعلق الأمر تلقائيًا بجعل مخطط Openai Tool JSON ، ومكالمة ، وبناء النتيجة إلى نموذج الدردشة. ثم هناك أداة ثانوية is_statement_true تستخدم خدعة Genius logit_bias التي تستخدم رمز الإخراج واحد فقط.
لكن مهلا ، آمل أن تصبح هذه مجموعة من وظائف المساعد LLM المفيدة الصغيرة التي ستجعل البناء أسهل لأن واجهات برمجة تطبيقات حافة النزيف الحالية هي بعض الفوضى وأعتقد أنه يمكننا القيام بعمل أفضل.

pip install llmfoo تحتاج إلى الحصول على Openai_API_KEY في ENV والقدرة على الاتصال gpt-4-1106-preview
يجب أن يكون is_statement_true سهل الفهم. أدلي ببيان اللغة الطبيعية ، وتحقق من ذلك ضد المعايير أو الصدق العام. تعود منطقية.
تتيح وظيفة pdf2md التي تم تقديمها حديثًا تحويل مستندات PDF إلى تنسيق تخفيض ، مما يجعلها أسهل في المعالجة والتكامل مع الأنظمة المستندة إلى LLM. هذه الميزة مفيدة بشكل خاص لاستخراج النص والجداول من PDFs وتحويلها إلى تنسيق أكثر قابلية للإدارة.
pdftocairo على نظامك لتحويل صفحات PDF إلى الصور. 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 )ستعالج هذه الوظيفة كل صفحة من PDF ، في محاولة لاستخراج النص والأرقام والجداول وتحويلها إلى ملف تخفيض في دليل الإخراج المحدد.
@tool التعليق التوضيحي.openai_schema لإرجاع المخطط (يمكنك تحريره من JSON إذا لم تكن راضية عما فعلت الآلات)openai_tool_call لإجراء مكالمة الأداة وإرجاع النتيجة في تنسيق رسالة API الدردشةopenai_tool_output لإجراء مكالمة الأداة وإرجاع النتيجة في تنسيق إخراج أداة API مساعد 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 ( "," , "" )مهتم بالمساهمة؟ أحب الحصول على مساعدتك لجعل هذا المشروع أفضل! تتغير واجهات برمجة التطبيقات تحت يتغير ويظل النظام أول نسخة أولى.
هذا المشروع مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.