chatgpt ، والتضمين البحث ، وجيل من أجل الاسترجاع من أجل الصرير/smalltalk
تشير الدلالات (من sēmantikós اليونانية القديمة) إلى أهمية أو معنى المعلومات. في حين أن الفئات العادية والفئات String في Squeak تأخذ عرضًا نحلًا على النص كتسلسل من الأحرف وتعليمات Text ، يركز SemanticText على إحساس النص وفهمه. مع ظهور NLP (معالجة اللغة الطبيعية) و LLMS (نماذج لغة كبيرة) ، يتوسع توافر قابلية تفسير النص في أنظمة الحوسبة بشكل كبير. تهدف هذه الحزمة إلى جعل السياق الدلالي متاحًا في Squeak/SmallTalk من خلال توفير الميزات التالية:
لمزيد من التفاصيل ، قم بتثبيت الحزمة والغطس في تعليقات الفصل والرمز ، أو متابعة القراءة أدناه.
chatgpt تكامل المحرر: اشرحه / قم بتلخيصه / قله مراقب مصاريف API Openai | مساعدة تكامل المتصفح: البحث الدلالي والجيل المعزز للاسترجاع (خرقة) تكامل Talk Inbox Inbox: بحث مشابه للمحادثة |
لا يزال قيد التطوير. قد يتبع المزيد. ردود الفعل والمساهمات موضع ترحيب!
احصل على صورة جذع صرير حالية (موصى بها) أو صورة Squeak 6.0 (دعم محدود فقط) وقم بذلك في مساحة العمل:
Metacello new
baseline: ' SemanticText ' ;
repository: ' github://hpi-swa-lab/Squeak-SemanticText:main ' ;
get; " for updates "
load. نظرًا لأن معظم الوظائف تعتمد حاليًا على API Openai ، فأنت بحاجة إلى إعداد مفتاح API هنا ولصقه في تفضيل OpenAI API Key . على الرغم من أن API Openai ليس مجانيًا في الاستخدام ، إلا أنك تدفع فقط مقابل ما تحتاجه وليس هناك آلية ائتمانية مفاجئة. الرموز رخيصة حقًا - على سبيل المثال ، يمكنك تعيين عتبة 5 دولارات ، وهو ما يكفي للدردشة أكثر من 1 ميو. كلمات أو تضمين 50 ميو. الكلمات (أو 42 مرة الأعمال التي تم جمعها لشكسبير).
من شريط الإرساء الرئيسي العالمي ، انتقل إلى التطبيقات > chatgpt . اكتب مطالبك واضغط على CMD + S ، أو اضغط على الصوت لإجراء محادثة صوتية مستمرة. في الوضع المتقدم ، يمكنك أيضًا تحديد تعليمات النظام والوظائف التي يمكن أن يتصل بها النموذج. من خلال قائمة النافذة
، يمكنك أيضًا اختيار نموذج مختلف أو تحرير تفضيلات أخرى.
تحقق من أساليب تمديد *SemanticText على String ، Collection ، و SequenceableCollection ، AbstractSound ، وغيرها. بعض الأمثلة:
' smalltalk inventor ' semanticAnswer. -- > ' Alan Kay '
' It ' ' s easier to invent the future than ' semanticComplete. -- > ' to predict it. '
#(apple banana cherry) semanticComplete: 5 . -- > #('date' 'elderberry' 'fig' 'grape' 'honeydew')
Character comment asString semanticSummarize.
Morph comment asString semanticAsk: ' difference between bounds and fullBounds ' .
(( SystemWindow windowsIn: Project current world satisfying: [ :ea | ea model isKindOf: Workspace ]) collect: #label )
semanticFindRankedObjects: 20 similarToQuery: ' open bugs ' .
' Hello Squeak ' semanticSayIt.
SampledSound semanticFromUser semanticToText.الاستخدام الأساسي مثل هذا:
SemanticConversation new
addSystemMessage: ' You make a bad pun about everything the user writes to you. ' ;
addUserMessage: ' Yesterday I met a black cat! ' ;
getAssistantReply. -- > ' I hope it was a purr-fectly nice encounter and not a cat-astrophe! 'يمكنك أيضًا تحسين المطالبة من خلال إدخال أزواج إضافية من رسائل المستخدم/المساعدين قبل التفاعل ( طالبة قليلة ):
SemanticConversation new
addSystemMessage: ' You answer every question with the opposite of the truth. ' ;
addUserMessage: ' What is the biggest animal on earth? ' ;
addAssistantMessage: ' The biggest animal on earth is plankton. ' ;
addUserMessage: ' What is the smallest country on earth? ' ;
getAssistantReply. -- > ' The smallest country on earth is Russia. ' | conversation message |
conversation := SemanticConversation new .
message := conversation
addUserMessage: ' What time is it? ' ;
addFunction: ( SemanticFunction fromString: ' getTime ' action: [ Time now]);
getAssistantMessage.
[conversation resolveAllToolCalls] whileTrue:
[message := conversation getAssistantMessage].
message -- > [assistant] ' The current time is 20:29:52. ' SemanticConversation new
withConfigDo: [ :config |
config temperature: 1.5 .
config nucleusSamplingMass: 0.8 .
config maxTokens: 200 " high temperatures may cause the model to output nonsense and not find an end! " ];
addUserMessage: ' Write a short poem about Alan Kay and Smalltalk ' ;
getAssistantReply -- > ' In the realm of silicon and spark,
A visionary left his mark,
Alan Kay, with dreams unfurled,
Birthed a language to change the world.
Smalltalk, a whisper, soft and clear,
A paradigm that pioneers,
Objects dancing, message flows,
In its design, innovation grows.
A windowed world where thoughts collide,
A playground where ideas abide,
From his vision, the seeds were sown,
For the digital gardens we have grown.
So here ' ' s to Kay, a mind so bright,
Who lit the way with insight ' ' s light,
In every line of code, we find,
A legacy that reshapes the mind. ' يمكنك العثور على المزيد من الأمثلة (مثل تدفق الرسائل ، واسترداد استجابات متعددة ، وتسجيل احتمالات الرمز المميز) على جانب فئة من SemanticConversation .
يمكن تعريف وكيل بسيط مثل هذا:
SemanticAgent subclass: #SemanticSqueakAgent
instanceVariableNames: ' '
classVariableNames: ' '
poolDictionaries: ' '
category: ' SemanticText-Model-Agents ' .
SemanticSqueakAgent >> initializeConversation: aConversation
super initializeConversation: aConversation.
aConversation addSystemMessage: ' You are a Squeak/Smalltalk assistant. ' .
SemanticSqueakAgent >> eval: aString
" Evaluate a Smalltalk expression in the running Squeak image. "
< function: eval(
expression: string " e.g. '(8 nthRoot: 3)-1' "
) >
^ Compiler evaluate: aStringثم ، احتجزها مثل هذا:
SemanticSqueakAgent makeNewConversation
addUserMessage: ' how many windows are open ' ;
getAssistantReply -- > ' You currently have 138 open windows in your Squeak environment. ' أو إحضار محرر محادثة من خلال القيام SemanticSqueakAgent openNewConversation .
كل شيء يبدأ في الفصل SemanticCorpus . على سبيل المثال ، هذه هي الطريقة التي يمكنك بها إعداد مجموعة بحث دلالية لنظام مساعدة Squeak بنفسك:
" Set up and populate semantic corpus "
helpTopics := CustomHelp asHelpTopic semanticDeepSubtopicsSkip: [ :topic |
topic title = ' All message categories ' ]. " not relevant "
corpus := SemanticPluggableCorpus titleBlock: #title contentBlock: #contents .
corpus addFragmentDocumentsFromAll: helpTopics.
corpus estimatePriceToInitializeEmbeddings. -- > approx ¢ 1.66
corpus updateEmbeddings.
" Similarity search "
originTopic := helpTopics detect: [ :ea | ea key = #firstContribution ].
results := corpus findObjects: 10 similarToObject: originTopic.
" Semantic search "
results := corpus findObjects: 10 similarToQuery: ' internet connection ' .
" Optionally, display results in a HelpBrowser "
resultsTopic := HelpTopic named: ' Search results ' .
results do: [ :ea | resultsTopic addSubtopic: ea].
resultsTopic browse.
" RAG "
(corpus newConversationForQuery: ' internet connection ' ) open.انقر فوق أي محرر نصية (حدد اختياريًا جزءًا من النص قبل ذلك) ، انقر فوق المزيد ... ، وحدد أحدهم شرحه ، أو ملخصه ، أو اطرح سؤالاً حوله ... أو قوله . أو قريبا عبر لوحة المفاتيح: ESC ، ؟ ، أدخل ، س . ؟
يمكنك أيضًا تحديد التحدث إلى الكتابة لإملاء النص.
افتح متصفح مساعدة من شريط الإرساء الرئيسي في العالم واكتب استفسارك في مجال البحث. لاحظ أنه في الوقت الحالي ، تعمل مصطلحات البحث المرادفة بشكل أفضل من الأسئلة (على سبيل المثال ، تفضل "الاتصال بالإنترنت" فوق "كيف يمكنني الوصول إلى الإنترنت؟").
ملحوظة
تحتاج هذه الميزات إلى تمكين في متصفح التفضيل أولاً ("البحث الدلالي في متصفحات المساعدة").
احصل على Squeak Inbox Talk (World Main Docking Bar> Tools > Squeak Inbox Talk ) ، وقم بتحديثه إلى أحدث إصدار من خلال قائمة الإعدادات ، وقم بتشغيل الخيار الدلالي في Talk Inbox Talk في متصفح التفضيلات. بعد ذلك ، يمكنك:
هذا مشروع بحث تجريبي. تحقق من DiseAnticsQueak ، ورقتنا ، أو أطروحتي لمزيد من المعلومات.
افعل هذا:
OpenAIAccount openExpenseWatcherأنا شخصياً أحب الاستيلاء على آخر suborph من هذا المورف وإدخاله في شريط الإرساء الرئيسي الخاص بي. إذا أعجبك هذا أيضًا ، فأرسل طلب ميزة أو طلب سحب لأتمتة هذا!
يمكن تسجيل النماذج المختلفة من قبل مقدمي الخدمات ، وتحديدها ، واستخدامها من خلال واجهة SemanticText . المزود الرئيسي اليوم هو عميل Openai API ، ولكن قد يتبع ذلك عملاء آخرون. يمكن الاستعلام عن السجل مثل defaultEmbeddingModel ، أو chooseDefaultConversationModel ، أو registeredSpeechSynthesisModels .
لأغراض تصحيح الأخطاء والاختبار ، نقدم أيضًا مزودًا وهميًا للمحادثات والتضمينات.
بالإضافة إلى ذلك ، هناك مزود توليف الكلام لمكونه KLATT . يتطلب حزمة الكلام ويمكن تحميلها بشكل منفصل من حزمة SemanticTextProviders-Klatt (أو عن طريق تحديد load: #full في البرنامج النصي metacello).
تتوفر مزيد من التفاصيل حول الهندسة المعمارية وواجهة برمجة التطبيقات وأدوات Semantictext في ملحق أطروحتي. لاحظ أن هذا ربما يتضمن معلومات قديمة أو لم يتم تطبيقها بعد (ولكن أيضًا مخططات وأمثلة لطيفة! ومجموعة من النظرية خلفها!).
في الوقت الحالي ، من المعروف أن المشاريع التالية تستخدم Semantictext:
في حين أن Squeakgpt لا علاقة لها من الناحية الفنية ، يستكشف نهجًا مشابهًا لاستخدام الذكاء الاصطناعى التوليدي لـ Squeak.
بفضل Marcel Taeumel (marceltaeumel) لتقديم المشورة لي خلال دراستي وتجاربي. بفضل Toni Mattis (amintos) للحصول على نصائح تتعلق بتضمين البحث (على وجه الخصوص لـ 541ae49 ). بفضل Vincent Eichhorn (@Vincenteichhorn) لإعطائي نظرة عامة على تقنيات الفهرسة لـ Vector DBS (سيتم تنفيذها قريبًا!). بفضل الأشخاص R/MachinElearning على اقتراح نماذج التضمين البديلة (قد يتم تنفيذ اقتراحاتك في يوم من الأيام).
صرير سعيد!