Skip to content

Commit

Permalink
Merge pull request #117 from merefield/extensible_functions
Browse files Browse the repository at this point in the history
FEATURE: ability to extend with functions from other plugins
  • Loading branch information
merefield authored Aug 27, 2024
2 parents bc6851a + c8df01a commit b883c2b
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
27 changes: 27 additions & 0 deletions lib/discourse_chatbot/bots/open_ai_bot_rag.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,27 @@
# frozen_string_literal: true
require "openai"

BUILT_IN_FUNCTIONS = ["DiscourseChatbot::StockDataFunction",
"DiscourseChatbot::GetCoordsOfLocationDescriptionFunction",
"DiscourseChatbot::GetDistanceBetweenLocationsFunction",
"DiscourseChatbot::ForumTopicSearchFromTopicLocationFunction",
"DiscourseChatbot::ForumTopicSearchFromUserLocationFunction",
"DiscourseChatbot::ForumTopicSearchFromLocationFunction",
"DiscourseChatbot::ForumGetUserAddressFunction",
"DiscourseChatbot::ForumUserSearchFromTopicLocationFunction",
"DiscourseChatbot::ForumUserSearchFromUserLocationFunction",
"DiscourseChatbot::ForumUserSearchFromLocationFunction",
"DiscourseChatbot::ForumUserDistanceFromLocationFunction",
"DiscourseChatbot::ForumSearchFunction",
"DiscourseChatbot::PaintFunction",
"DiscourseChatbot::VisionFunction",
"DiscourseChatbot::WikipediaFunction",
"DiscourseChatbot::WebSearchFunction",
"DiscourseChatbot::WebCrawlerFunction",
"DiscourseChatbot::NewsFunction",
"DiscourseChatbot::EscalateToStaffFunction",
"DiscourseChatbot::CalculatorFunction"]

module ::DiscourseChatbot

class OpenAiBotRag < OpenAIBotBase
Expand Down Expand Up @@ -93,6 +114,12 @@ def merge_functions(opts)
functions << web_search_function if !(SiteSetting.chatbot_serp_api_key.blank? && SiteSetting.chatbot_jina_api_token.blank?)
functions << stock_data_function if !SiteSetting.chatbot_marketstack_key.blank?

if ::DiscourseChatbot::Function.descendants.count > BUILT_IN_FUNCTIONS.count
::DiscourseChatbot::Function.descendants.each do |func|
functions << func.new if !BUILT_IN_FUNCTIONS.include?(func.to_s)
end
end

@functions = parse_functions(functions)
@tools = @functions.map { |func| { "type": "function", "function": func } }
@func_mapping = create_func_mapping(functions)
Expand Down
2 changes: 1 addition & 1 deletion plugin.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true
# name: discourse-chatbot
# about: a plugin that allows you to have a conversation with a configurable chatbot in Discourse Chat, Topics and Private Messages
# version: 1.0.0
# version: 1.0.1
# authors: merefield
# url: https://github.com/merefield/discourse-chatbot

Expand Down

0 comments on commit b883c2b

Please sign in to comment.