Skip to content

Commit

Permalink
v.34.94; support ChatGPT function calling
Browse files Browse the repository at this point in the history
  • Loading branch information
eliranwong committed Sep 8, 2023
1 parent 16c5044 commit bca7e49
Show file tree
Hide file tree
Showing 24 changed files with 259 additions and 44 deletions.
2 changes: 1 addition & 1 deletion UniqueBibleAppVersion.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
34.93
34.94
5 changes: 4 additions & 1 deletion gui/MainWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -5710,13 +5710,16 @@ def bibleChat(self, mode):
self.runPlugin("Bible Chat")

def runBibleChatPlugins(self):
# users can modify config.predefinedContexts, config.inputSuggestions and config.chatGPTTransformers via plugins
# The following config values can be modified with plugins, to extend functionalities
config.predefinedContexts = {
"[none]": "",
"[custom]": "",
}
config.inputSuggestions = []
config.chatGPTTransformers = []
config.chatGPTApiFunctionSignatures = []
config.chatGPTApiAvailableFunctions = {}

pluginFolder = os.path.join(os.getcwd(), "plugins", "chatGPT")
for plugin in FileUtil.fileNamesWithoutExtension(pluginFolder, "py"):
script = os.path.join(pluginFolder, "{0}.py".format(plugin))
Expand Down
29 changes: 27 additions & 2 deletions gui/Worker.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import config, sys, traceback, os, platform, openai
import config, sys, traceback, os, platform, openai, json
if config.qtLibrary == "pyside6":
from PySide6.QtCore import QRunnable, Slot, Signal, QObject, QThreadPool
else:
Expand Down Expand Up @@ -91,7 +91,7 @@ def __init__(self, parent):
def getResponse(self, messages, progress_callback):
responses = ""
try:
if config.chatGPTApiNoOfChoices == 1:
if config.chatGPTApiNoOfChoices == 1 and config.chatGPTApiFunctionCall == "none":
completion = openai.ChatCompletion.create(
model=config.chatGPTApiModel,
messages=messages,
Expand Down Expand Up @@ -119,7 +119,32 @@ def getResponse(self, messages, progress_callback):
max_tokens=config.chatGPTApiMaxTokens,
temperature=config.chatGPTApiTemperature,
n=config.chatGPTApiNoOfChoices,
functions=config.chatGPTApiFunctionSignatures,
function_call=config.chatGPTApiFunctionCall,
)

response_message = completion["choices"][0]["message"]
if response_message.get("function_call"):
function_name = response_message["function_call"]["name"]
fuction_to_call = config.chatGPTApiAvailableFunctions[function_name]
function_args = json.loads(response_message["function_call"]["arguments"])
function_response = fuction_to_call(function_args)

# check function response
# print("Got this function response:", function_response)

# process function response
# send the info on the function call and function response to GPT
messages.append(response_message) # extend conversation with assistant's reply
messages.append(
{
"role": "function",
"name": function_name,
"content": function_response,
}
) # extend conversation with function response
return self.getResponse(messages, progress_callback)

for index, choice in enumerate(completion.choices):
chat_response = choice.message.content
if len(completion.choices) > 1:
Expand Down
2 changes: 2 additions & 0 deletions lang/language_de.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "Automatisch blättern",
"searchRB6": "Verwenden Sie die natürliche Sprache, um Bibeltext über GPT \n zu durchsuchen (OpenAI-API-Schlüssel ist erforderlich, um diese Funktion auszuführen.) \n z.B. langsam zu sprechen \n z.B. Verse enthalten sowohl Jesus als auch Liebe \n z.B. Versen enthalten Geist, aber nicht heilig \n z.B. Glaube in Kapitel 3",
"searchRB7": "Führen Sie eine semantische Suche im Bibeltext über GPT \n aus (für die Ausführung dieses Features ist der OpenAI-API-Schlüssel erforderlich.) \n z.B. langsames Sprechen \n z.B. Zitat Verse über Gott schuf die Erde \n z.B. Jesus traf Nicodemus \n z.B. ähnliche Verse zu Genesis 1: 1 in Hebräer \n z.B. schreiben eine Zusammenfassung zu Exodus 13 \n z.B. vergleichen Mark 1 und John 1",
"exportChat": "Chat exportieren",
"countPromptTokens": "Token für Zähler zählen",
}
2 changes: 2 additions & 0 deletions lang/language_el.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "Αυτόματη Scroll",
"searchRB6": "Χρησιμοποιήστε τη φυσική γλώσσα για να αναζητήσετε κείμενο bible μέσω GPT \n (απαιτείται το κλειδί OpenAI API για την εκτέλεση αυτής της λειτουργίας.) \n π.χ. αργά για να μιλήσετε, π.χ. οι στίχοι περιέχουν και τον Ιησού και την αγάπη, π.χ. οι στίχοι περιέχουν πνεύμα αλλά όχι άγιο, π.χ. πίστη στο κεφάλαιο 3",
"searchRB7": "Εκτελέστε μια σημασιολογική αναζήτηση στο κείμενο bible μέσω της GPT \n (απαιτείται το κλειδί OpenAI API για την εκτέλεση αυτής της λειτουργίας.) \n π.χ. αργή ομιλία \n π.χ. στίχοι για το Θεό που δημιούργησε τη γη, π.χ. ο Ιησούς συνάντησε το Νικόδημο \n π.χ. παρόμοιους στίχους με τη Γένεση 1: 1 σε Εβραίους \n π.χ. γράψτε μια περίληψη για την Έξοδο 13 \n π.χ. συγκρίνετε Mark 1 και John 1",
"exportChat": "Εξαγωγή συνομιλίας",
"countPromptTokens": "Κόμης Prompt Tokens",
}
2 changes: 2 additions & 0 deletions lang/language_en_GB.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "Auto Scroll",
"searchRB6": "Use natural language to search bible text via GPT \n (OpenAI API key is required to run this feature.) \n e.g. slow to speak \n e.g. verses contain both Jesus and love \n e.g. verses contain spirit but not holy \n e.g. faith in chapter 3",
"searchRB7": "Perform a semantic search on bible text via GPT \n (OpenAI API key is required to run this feature.) \n e.g. slow to speak \n e.g. quote verses about God created the earth \n e.g. Jesus met Nicodemus \n e.g. similar verses to Genesis 1:1 in Hebrews \n e.g. write a summary on Exodus 13 \n e.g. compare Mark 1 and John 1",
"exportChat": "Export Chat",
"countPromptTokens": "Count Prompt Tokens",
}
2 changes: 2 additions & 0 deletions lang/language_en_US.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "Auto Scroll",
"searchRB6": "Use natural language to search bible text via GPT \n (OpenAI API key is required to run this feature.) \n e.g. slow to speak \n e.g. verses contain both Jesus and love \n e.g. verses contain spirit but not holy \n e.g. faith in chapter 3",
"searchRB7": "Perform a semantic search on bible text via GPT \n (OpenAI API key is required to run this feature.) \n e.g. slow to speak \n e.g. quote verses about God created the earth \n e.g. Jesus met Nicodemus \n e.g. similar verses to Genesis 1:1 in Hebrews \n e.g. write a summary on Exodus 13 \n e.g. compare Mark 1 and John 1",
"exportChat": "Export Chat",
"countPromptTokens": "Count Prompt Tokens",
}
2 changes: 2 additions & 0 deletions lang/language_es.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "Desplazamiento automático",
"searchRB6": "Utilice lenguaje natural para buscar texto de biblia a través de GPT \n (la clave de API de OpenAI es necesaria para ejecutar esta característica). \n Por ejemplo, lento para hablar \n por ejemplo, los versículos contienen tanto a Jesús como al amor \n por ejemplo, los versos contienen espíritu, pero no santo, por ejemplo, la fe en el capítulo 3",
"searchRB7": "Realizar una búsqueda semántica en texto de biblia a través de GPT \n (la clave de API de OpenAI es necesaria para ejecutar esta característica). \n e.g. slow to speak \n e.g. citar versos sobre Dios creó la tierra \n por ejemplo, Jesús conoció a Nicodemo \n por ejemplo versos similares a Génesis 1: 1 en Hebreos \n por ejemplo, escribir un resumen en Éxodo 13 \n por ejemplo, comparar marca 1 y Juan 1",
"exportChat": "Conversación de exportación",
"countPromptTokens": "Señales de solicitud de recuento",
}
2 changes: 2 additions & 0 deletions lang/language_fr.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "Défilement automatique",
"searchRB6": "Utilisez le langage naturel pour rechercher du texte bible via GPT \n (la clé d'API OpenAI est requise pour exécuter cette fonction.) \n p. Ex. Lent à parler \n p. Ex. Les versets contiennent à la fois Jésus et l'amour \n p. Ex. Les versets contiennent l'esprit mais pas saint \n p. Ex. La foi au chapitre 3",
"searchRB7": "Effectuez une recherche sémantique sur le texte bible via GPT \n (la clé d'API OpenAI est requise pour exécuter cette fonction.) \n p. Ex. Lent à parler \n p. Ex., citation de versets sur Dieu a créé la terre, p. Ex. Jésus a rencontré Nicodemus \n p. Ex. Des versets similaires à la Genèse 1: 1 dans Hebrews \n, p. Ex. écrire un résumé sur Exode 13 \n par exemple, comparer les marques 1 et Jean 1",
"exportChat": "Exporter la discussion",
"countPromptTokens": "Nombre de jetons d'invite",
}
2 changes: 2 additions & 0 deletions lang/language_hi.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "स्वतः स्क्रॉल करें",
"searchRB6": "जीपीटी \n के माध्यम से बाईबल पाठ खोजने के लिए प्राकृतिक भाषा का उपयोग करें (OpenI API कुंजी इस सुविधा को चलाने के लिए आवश्यक है.) \n e.g. slow to speak \n e.g. verses contain both Jesus and love \n e.g. verses contain spirit but not holy \n e.g. faith in chapter 3",
"searchRB7": "जीपीटी \n के माध्यम से बाईबल पाठ पर एक semantic खोज करें (OpenI API कुंजी इस सुविधा को चलाने के लिए आवश्यक है.) \n e.g. slow to speak \n e.g. quote verses about God created the earth \n e.g. Jesus met Nicodemus \n e.g. similar verses to Genesis 1:1 in Hebrews \n e.g. write a summary on Exodus 13 \n e.g. compare Mark 1 and John 1",
"exportChat": "चैट निर्यात करें",
"countPromptTokens": "संकेत संकेत गिनती",
}
2 changes: 2 additions & 0 deletions lang/language_it.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "Scorrimento Automatico",
"searchRB6": "Utilizzare il linguaggio naturale per cercare il testo bibbia via GPT \n (è necessaria la chiave API OpenAI per eseguire questa funzione.) \n ad esempio lento a parlare \n ad esempio i versi contengono sia Gesù che l'amore \n e.g. versi contengono spirito ma non santo \n ad esempio la fede nel capitolo 3",
"searchRB7": "Eseguire una ricerca semantica sul testo bibbia tramite GPT \n (è necessaria la chiave API OpenAI per eseguire questa funzione.) \n ad esempio lento a parlare \n ad esempio, citare versi su Dio ha creato la terra \n e.g. Gesù ha incontrato Nicodemus \n e.g. versi simili a Genesis 1: 1 in Hebrews \n e.g. scrivere un riepilogo su Exodus 13 \n ad esempio confrontare Segnala 1 e Giovanni 1",
"exportChat": "Export Chat",
"countPromptTokens": "Conteggio Prompt Token",
}
2 changes: 2 additions & 0 deletions lang/language_ja.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "自動スクロール",
"searchRB6": "自然言語を使用して、 GPT \n でバイブル・テキストを検索します ( この機能を実行するには、 OpenAI API キーが必要です。 ) \n 例えば、語の遅い \n 。例 : 詩にはキリストと愛の両方が含まれています。例えば、詩には精神が含まれているが、神聖ではなく、第 3 章の信仰",
"searchRB7": "GPT \n ( この機能を実行するには、 OpenAI API キーを使用して、バイブル・テキストでセマンティック検索を実行します。 ) \n 例えば、例えば、神が地球を創造した例 : 例えば、イエスがニクデムスと出会った例 : 例えば、ヘブライ語での例 : 例えば、ヘブライ語での例 : 例えば、例えばマーク 1 と John 1 と比較して、例えば Exodus 13 \n の要約を記述する。",
"exportChat": "チャットのエクスポート",
"countPromptTokens": "カウント・プロンプト・トークン",
}
2 changes: 2 additions & 0 deletions lang/language_ko.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "자동 스크롤",
"searchRB6": "GPT \n 을 통해 성경을 검색하려면 자연어를 사용한다 (이 기능을 실행하려면 OpenAI API키가 필요하다.) 예를 들어, 말이 느린 경우, 예를 들어, 구절들은 예수와 사랑 모두를 포함하며, 예를 들어, 구절들은 영혼을 포함하지만, 예를 들어, 챕터 3에 대한 믿음을 포함하지 않는다.",
"searchRB7": "GPT \n 을 통해 성경 텍스트에 대한 시맨틱 검색을 수행한다 (이 기능을 실행하려면 OpenAI API키가 필요하다.) \n 예를 들어, 하나님에 대한 인용 구절, 예를 들어, 지구를 창조한 신에 대한 인용 구절 (cn) 예를 들어, 예수는 예를 들어, 헤브러스 (Hebrews) 에서의 제네시스 1: 1과 같은 니오데우스 (Nicodemus) 를 만났다 (예를 들어, 출두스 (Exodus) 13에 대한 요약을 기입함).",
"exportChat": "채팅 내보내기",
"countPromptTokens": "카운트 프롬프트 토큰",
}
2 changes: 2 additions & 0 deletions lang/language_ml.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "ഓട്ടോ സ്ക്രോള്",
"searchRB6": "ജിപിT \n വഴി ബൈബിള് ടെക്സ്റ്റ് തെരയാന് പ്രകൃതി ഭാഷ ഉപയോഗിക്കുക (OpenAI API കീ ഈ സവിശേഷത പ്രവര്ത്തിപ്പിക്കാന് ആവശ്യമാണ്.) ഉദാ: \n - ഉം സംസാരിക്കാൻ പതുക്കെ, യേശു, സ്നേഹം, ഉദാ, ഉദാ, ആത്മാവ്, ആത്മാവ് ഉണ്ടായിരിക്കാം.",
"searchRB7": "ജിപിT \n വഴി ബൈബിള് ടെക്സ്റ്റില് ഒരു സെമന്റിക് തെരച്ചില് പെര്ഫോം ചെയ്യുക (OpenAI API കീ ഈ സവിശേഷത പ്രവര്ത്തിപ്പിക്കാന് ആവശ്യമാണ്) ഉദാ: ദൈവത്തെക്കുറിച്ച് സംസാരിക്കാൻ പതുക്കെ, ദൈവത്തെപ്പറ്റി ഉദ്ധരിച്ചതിന്റെ ഉദ്ധരണം: ദൈവം സൃഷ്ടിക്കപ്പെട്ടത് ഉദാ: യേശു നിക്കോഡീമസിനെ കണ്ടുമുട്ടി ഉദാ. ഉദാ:",
"exportChat": "ചട്ടക്കൂട് പുറത്തുവയ്ക്കുക",
"countPromptTokens": "à '- à', à ', à', à ', à', à ',",
}
2 changes: 2 additions & 0 deletions lang/language_ro.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "Derulare automată",
"searchRB6": "Utilizați limba naturală pentru a căuta text biblic prin GPT \n (OpenAI cheie API este necesar pentru a rula această caracteristică.) \n de exemplu, lent pentru a vorbi \n de exemplu, versetele conțin atât Isus și dragoste \n de exemplu, versetele conțin spirit, dar nu sfânt \n de exemplu, credința în capitolul 3",
"searchRB7": "Efectuați o căutare semantică pe text biblic prin GPT \n (OpenAI cheie API este necesar pentru a rula această caracteristică.) De exemplu, lent pentru a vorbi \n de exemplu, citat versete despre Dumnezeu a creat pământul \n de exemplu, Isus sa întâlnit Nicodim \n de exemplu, versete similare cu Geneza 1: 1 în Evrei \n de exemplu, scrie un rezumat pe Exod 13 \n de exemplu, compara Mark 1 și Ioan 1",
"exportChat": "Export Chat",
"countPromptTokens": "Numărați jetoanele prompte",
}
2 changes: 2 additions & 0 deletions lang/language_ru.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "Автопрокрутка",
"searchRB6": "Используйте естественный язык для поиска библеского текста через GPT \n (для запуска этой функции требуется ключ API OpenAI.) \n например, медленно говорят \n например, стихи содержат и Иисуса, и любовь \n например, стихи содержат дух, но не святой \n например, вера в главу 3",
"searchRB7": "Выполнить семантический поиск библеского текста через GPT \n (для запуска этой функции требуется ключ API OpenAI.) \n например, медленное слово \n например, цитаты о Боге создали землю \n например, Иисус встретил Никодемуса \n например, похожие стихи на Бытие 1: 1 в евреев \n например, написать резюме об Исходе 13 \n например, сравните Марка 1 и Джона 1",
"exportChat": "Экспортировать разговор",
"countPromptTokens": "Маркеры подсказки числа",
}
2 changes: 2 additions & 0 deletions lang/language_zh_HANS.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "自动滚动",
"searchRB6": "使用自然语言透过GPT搜索圣经文字 \n (需要OpenAI API金刚才能执行此功能。) \n 例如: slow to speak \n 例如: verses contain Jesus and love \n 例如: verses contain spirt bun not holy \n 例如: faith in chapter 3",
"searchRB7": "透过GPT执行圣经文字上的语言意思搜索\n(需要OpenAI API 金锭才能执行此功能。)\n 例如:慢说话\n ,例如:关于上帝国造了地球\n例如:耶诞遇到尼古拉\n 例如:在希伯来人中与 Genesis 1:1 类似 \n 例如:摘写出埃及记 13 的摘要\n 例如:比较 Mark 1 和 John 1 。",
"exportChat": "导出交谈",
"countPromptTokens": "计数提示标记",
}
2 changes: 2 additions & 0 deletions lang/language_zh_HANT.py
Original file line number Diff line number Diff line change
Expand Up @@ -1073,4 +1073,6 @@
"autoScroll": "自動捲動",
"searchRB6": "使用自然語言透過 GPT \n 搜尋 bible 文字(需要 OpenAI API 金鑰才能執行此功能。) \n 例如: slow to speak \n 例如: verses contain Jesus and love \n 例如: verses contain spirt bun not holy \n 例如: faith in chapter 3",
"searchRB7": "透過 GPT 執行聖經文字上的語意搜尋 \n (需要 OpenAI API 金鑰才能執行此功能。) \n 例如:慢慢說話 \n ,例如:關於上帝創造了地球 \n 例如:耶穌遇到尼古拉 \n 例如:在希伯來人中與 Genesis 1:1 相類似 \n 例如:撰寫出埃及記 13 的摘要\n 例如:比較 Mark 1 和 John 1 。",
"exportChat": "匯出會談",
"countPromptTokens": "計數提示記號",
}
6 changes: 6 additions & 0 deletions latest_changes.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
Changes in 34.94:
Improved plugin "Bible Chat"
* added "Export Data"
* added "Count Prompt Tokens"
* added support of ChatGPT function calling

Changes in 34.93:
* fixed Youtube-downloader gui

Expand Down
Loading

0 comments on commit bca7e49

Please sign in to comment.