foobara-ai 0.0.7 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2cf7c8f4de4993afb316ca3187bdc4372346b0743da3ed98b9fa7d4779538ffe
4
- data.tar.gz: 3f6d6eeb012a70d8faf1f2327ec170e0c99ee6f1dab48c8c0fd5b958ff902f06
3
+ metadata.gz: 3a8b6d134f68bc97ddf98d960fc36d70918244142609338d0f99b9ae5de09ab7
4
+ data.tar.gz: aa161360695ddd0eb94691575dc64c95419653968246dccb65c553df159c2638
5
5
  SHA512:
6
- metadata.gz: 55f47ea5885ae3f62ebbb456b27725cbc7572c8dbfeb4eeb8242e1a3c7b4c39577e0b08bd62c6ce19b706b9f1b9bf332418a39d02b9684e89960c0c31f5e14da
7
- data.tar.gz: 15b66c3c34b6b316a5aa18936abff18a3a439ce9f9de6aaed957b180a71a0abd1e5bf0e18393986a1d2dd7ed201de6c3e535ff1fd92843cbc457dd6da00745f7
6
+ metadata.gz: 6d41d1bc30e01d6f8e2b6bd83a0cf676306b5d468fb6373686d58e13ebe31ba21f3288218c4919c33d4d1ec7ae746206ab8cf2673e33e834f4e4d2144e1f0e52
7
+ data.tar.gz: 23f6f679f973c0987945976501fdb0c827c35335fa5b807dfebe3452d01ae15cbf1ae9c59a613c135536a9914e04cfa5251b6a7f22c4de4f853d9d9b3eed8a13
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ## [0.0.7] - 2025-03-04
1
+ ## [0.0.9] - 2025-03-05
2
2
 
3
3
  - Do not require all 3 services to function. Let user require which services they want to use.
4
4
 
data/lib/foobara/ai.rb CHANGED
@@ -28,6 +28,12 @@ module Foobara
28
28
  AI_SERVICES = ai_services
29
29
 
30
30
  base_dir = "#{__dir__}/../../src/foobara/ai/answer_bot"
31
+
32
+ AI_SERVICES.each_value do |domain|
33
+ path = Util.underscore(domain.foobara_domain_name)
34
+ require_relative "#{base_dir}/domain_mappers/#{path}/model_to_model_enum_string"
35
+ end
36
+
31
37
  Util.require_directory "#{base_dir}/types"
32
38
  Dir["#{base_dir}/domain_mappers/*.rb"].each { |f| require f }
33
39
  Dir["#{base_dir}/*.rb"].each { |f| require f }
@@ -13,16 +13,11 @@ module Foobara
13
13
 
14
14
  result :string
15
15
 
16
- depends_on OpenAiApi::CreateChatCompletion,
17
- AnthropicApi::CreateMessage,
18
- OllamaApi::GenerateChatCompletion
19
- # including these is now optional
20
- # DomainMappers::ModelToAiService,
21
- # DomainMappers::ServiceToCommand,
22
- # DomainMappers::OpenAiApi::QuestionToCreateChatCompletion,
23
- # DomainMappers::OpenAiApi::ChatCompletionToAnswer,
24
- # DomainMappers::AnthropicApi::QuestionToCreateMessage,
25
- # DomainMappers::AnthropicApi::MessageResultToAnswer
16
+ AI_SERVICES.each_key do |service|
17
+ command = Foobara::Ai::AnswerBot::DomainMappers::ServiceToChatCompletionCommand.map!(service)
18
+ depends_on command
19
+ end
20
+
26
21
  def execute
27
22
  determine_ai_service
28
23
  determine_ai_command
@@ -38,7 +33,7 @@ module Foobara
38
33
  end
39
34
 
40
35
  def determine_ai_command
41
- self.ai_command = domain_map!(ai_service, to: Foobara::Command)
36
+ self.ai_command = Foobara::Ai::AnswerBot::DomainMappers::ServiceToChatCompletionCommand.map!(ai_service)
42
37
  end
43
38
 
44
39
  def run_ai_service
@@ -1,5 +1,3 @@
1
- require_relative "../../types/model_enum"
2
-
3
1
  module Foobara
4
2
  module Ai
5
3
  module AnswerBot
@@ -1,5 +1,3 @@
1
- require_relative "../../types/model_enum"
2
-
3
1
  module Foobara
4
2
  module Ai
5
3
  module AnswerBot
@@ -1,5 +1,3 @@
1
- require_relative "../../types/model_enum"
2
-
3
1
  module Foobara
4
2
  module Ai
5
3
  module AnswerBot
@@ -1,10 +1,8 @@
1
- require_relative "../types/service_enum"
2
-
3
1
  module Foobara
4
2
  module Ai
5
3
  module AnswerBot
6
4
  module DomainMappers
7
- class ServiceToChatCompletionCommand < Foobara::DomainMapper
5
+ class ServiceToListModelsCommand < Foobara::DomainMapper
8
6
  from :service_enum
9
7
  # TODO: create a :class type? Maybe with an inherits: validator?
10
8
  to Class
@@ -9,12 +9,8 @@ module Foobara
9
9
 
10
10
  result [Types::Model]
11
11
 
12
- LIST_COMMANDS = AI_SERVICES.values.map do |domain|
13
- if domain == OllamaApi
14
- OllamaApi::ListLocalModels
15
- else
16
- domain::ListModels
17
- end
12
+ LIST_COMMANDS = AI_SERVICES.keys.map do |service|
13
+ Foobara::Ai::AnswerBot::DomainMappers::ServiceToChatCompletionCommand.map!(service)
18
14
  end
19
15
 
20
16
  depends_on(*LIST_COMMANDS)
@@ -1,14 +1,11 @@
1
1
  require_relative "service_enum"
2
2
  require_relative "../domain_mappers/service_to_list_models_command"
3
- require_relative "../domain_mappers/anthropic_api/model_to_model_enum_string"
4
- require_relative "../domain_mappers/ollama_api/model_to_model_enum_string"
5
- require_relative "../domain_mappers/open_ai_api/model_to_model_enum_string"
6
3
 
7
4
  module Foobara
8
5
  module Ai
9
6
  module AnswerBot
10
7
  module Types
11
- threads = ServiceEnum.all_values.map do |service|
8
+ threads = AI_SERVICES.keys.map do |service|
12
9
  Thread.new do
13
10
  service_models = AnswerBot.foobara_domain_map!(service).run!
14
11
  service_models.map do |model|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foobara-ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi