completion-kit 0.1.0.rc1
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +192 -0
- data/Rakefile +12 -0
- data/app/assets/config/completion_kit_manifest.js +1 -0
- data/app/assets/config/manifest.js +3 -0
- data/app/assets/images/completion_kit/logo.svg +6 -0
- data/app/assets/javascripts/completion_kit/evaluation_steps_controller.js +25 -0
- data/app/assets/stylesheets/completion_kit/application.css +2214 -0
- data/app/controllers/completion_kit/api/v1/base_controller.rb +29 -0
- data/app/controllers/completion_kit/api/v1/criteria_controller.rb +62 -0
- data/app/controllers/completion_kit/api/v1/datasets_controller.rb +51 -0
- data/app/controllers/completion_kit/api/v1/metrics_controller.rb +51 -0
- data/app/controllers/completion_kit/api/v1/prompts_controller.rb +64 -0
- data/app/controllers/completion_kit/api/v1/provider_credentials_controller.rb +51 -0
- data/app/controllers/completion_kit/api/v1/responses_controller.rb +32 -0
- data/app/controllers/completion_kit/api/v1/runs_controller.rb +71 -0
- data/app/controllers/completion_kit/api_reference_controller.rb +9 -0
- data/app/controllers/completion_kit/application_controller.rb +31 -0
- data/app/controllers/completion_kit/criteria_controller.rb +67 -0
- data/app/controllers/completion_kit/datasets_controller.rb +53 -0
- data/app/controllers/completion_kit/mcp_controller.rb +57 -0
- data/app/controllers/completion_kit/metrics_controller.rb +52 -0
- data/app/controllers/completion_kit/prompts_controller.rb +69 -0
- data/app/controllers/completion_kit/provider_credentials_controller.rb +63 -0
- data/app/controllers/completion_kit/responses_controller.rb +44 -0
- data/app/controllers/completion_kit/runs_controller.rb +131 -0
- data/app/helpers/completion_kit/application_helper.rb +193 -0
- data/app/jobs/completion_kit/application_job.rb +4 -0
- data/app/jobs/completion_kit/generate_job.rb +12 -0
- data/app/jobs/completion_kit/judge_job.rb +12 -0
- data/app/jobs/completion_kit/model_discovery_job.rb +29 -0
- data/app/mailers/completion_kit/application_mailer.rb +6 -0
- data/app/models/completion_kit/application_record.rb +5 -0
- data/app/models/completion_kit/criteria.rb +22 -0
- data/app/models/completion_kit/criteria_membership.rb +20 -0
- data/app/models/completion_kit/dataset.rb +24 -0
- data/app/models/completion_kit/metric.rb +97 -0
- data/app/models/completion_kit/model.rb +13 -0
- data/app/models/completion_kit/prompt.rb +99 -0
- data/app/models/completion_kit/provider_credential.rb +114 -0
- data/app/models/completion_kit/response.rb +30 -0
- data/app/models/completion_kit/review.rb +28 -0
- data/app/models/completion_kit/run.rb +253 -0
- data/app/models/completion_kit/run_metric.rb +6 -0
- data/app/models/completion_kit/suggestion.rb +8 -0
- data/app/services/completion_kit/anthropic_client.rb +86 -0
- data/app/services/completion_kit/api_config.rb +80 -0
- data/app/services/completion_kit/csv_processor.rb +65 -0
- data/app/services/completion_kit/judge_service.rb +87 -0
- data/app/services/completion_kit/llm_client.rb +45 -0
- data/app/services/completion_kit/mcp_dispatcher.rb +53 -0
- data/app/services/completion_kit/mcp_tools/criteria.rb +106 -0
- data/app/services/completion_kit/mcp_tools/datasets.rb +90 -0
- data/app/services/completion_kit/mcp_tools/metrics.rb +98 -0
- data/app/services/completion_kit/mcp_tools/prompts.rb +112 -0
- data/app/services/completion_kit/mcp_tools/provider_credentials.rb +97 -0
- data/app/services/completion_kit/mcp_tools/responses.rb +45 -0
- data/app/services/completion_kit/mcp_tools/runs.rb +130 -0
- data/app/services/completion_kit/model_discovery_service.rb +223 -0
- data/app/services/completion_kit/ollama_client.rb +80 -0
- data/app/services/completion_kit/open_ai_client.rb +71 -0
- data/app/services/completion_kit/open_router_client.rb +69 -0
- data/app/services/completion_kit/prompt_improvement_service.rb +81 -0
- data/app/views/completion_kit/api_reference/_example.html.erb +6 -0
- data/app/views/completion_kit/api_reference/index.html.erb +308 -0
- data/app/views/completion_kit/criteria/_form.html.erb +46 -0
- data/app/views/completion_kit/criteria/edit.html.erb +14 -0
- data/app/views/completion_kit/criteria/index.html.erb +37 -0
- data/app/views/completion_kit/criteria/new.html.erb +13 -0
- data/app/views/completion_kit/criteria/show.html.erb +37 -0
- data/app/views/completion_kit/datasets/_form.html.erb +29 -0
- data/app/views/completion_kit/datasets/edit.html.erb +13 -0
- data/app/views/completion_kit/datasets/index.html.erb +38 -0
- data/app/views/completion_kit/datasets/new.html.erb +12 -0
- data/app/views/completion_kit/datasets/show.html.erb +45 -0
- data/app/views/completion_kit/metrics/_form.html.erb +72 -0
- data/app/views/completion_kit/metrics/edit.html.erb +13 -0
- data/app/views/completion_kit/metrics/index.html.erb +34 -0
- data/app/views/completion_kit/metrics/new.html.erb +12 -0
- data/app/views/completion_kit/metrics/show.html.erb +49 -0
- data/app/views/completion_kit/prompts/_form.html.erb +52 -0
- data/app/views/completion_kit/prompts/edit.html.erb +13 -0
- data/app/views/completion_kit/prompts/index.html.erb +46 -0
- data/app/views/completion_kit/prompts/new.html.erb +12 -0
- data/app/views/completion_kit/prompts/show.html.erb +156 -0
- data/app/views/completion_kit/provider_credentials/_discovery_status.html.erb +30 -0
- data/app/views/completion_kit/provider_credentials/_form.html.erb +71 -0
- data/app/views/completion_kit/provider_credentials/edit.html.erb +12 -0
- data/app/views/completion_kit/provider_credentials/index.html.erb +41 -0
- data/app/views/completion_kit/provider_credentials/new.html.erb +12 -0
- data/app/views/completion_kit/responses/show.html.erb +87 -0
- data/app/views/completion_kit/runs/_actions.html.erb +14 -0
- data/app/views/completion_kit/runs/_form.html.erb +159 -0
- data/app/views/completion_kit/runs/_progress.html.erb +18 -0
- data/app/views/completion_kit/runs/_response_row.html.erb +13 -0
- data/app/views/completion_kit/runs/_sort_toolbar.html.erb +8 -0
- data/app/views/completion_kit/runs/_status_header.html.erb +15 -0
- data/app/views/completion_kit/runs/edit.html.erb +14 -0
- data/app/views/completion_kit/runs/index.html.erb +43 -0
- data/app/views/completion_kit/runs/new.html.erb +12 -0
- data/app/views/completion_kit/runs/show.html.erb +79 -0
- data/app/views/completion_kit/runs/suggestion.html.erb +47 -0
- data/app/views/layouts/completion_kit/application.html.erb +77 -0
- data/config/routes.rb +55 -0
- data/db/migrate/20260311000001_create_completion_kit_tables.rb +87 -0
- data/db/migrate/20260326000001_rename_criteria_to_instruction_on_metrics_and_reviews.rb +6 -0
- data/db/migrate/20260327000001_add_progress_to_runs.rb +6 -0
- data/db/migrate/20260327100001_replace_criteria_with_direct_metrics_on_runs.rb +12 -0
- data/db/migrate/20260328000001_add_error_message_to_runs.rb +5 -0
- data/db/migrate/20260329000001_create_completion_kit_models.rb +20 -0
- data/db/migrate/20260401170001_add_discovery_columns_to_completion_kit_provider_credentials.rb +7 -0
- data/db/migrate/20260403000001_add_temperature_to_completion_kit_runs.rb +5 -0
- data/db/migrate/20260403000002_create_completion_kit_suggestions.rb +13 -0
- data/db/migrate/20260403000003_add_applied_at_to_completion_kit_suggestions.rb +5 -0
- data/lib/completion-kit.rb +1 -0
- data/lib/completion_kit/engine.rb +35 -0
- data/lib/completion_kit/version.rb +3 -0
- data/lib/completion_kit.rb +55 -0
- data/lib/generators/completion_kit/install_generator.rb +21 -0
- data/lib/generators/completion_kit/templates/README +20 -0
- data/lib/generators/completion_kit/templates/initializer.rb +43 -0
- metadata +361 -0
data/config/routes.rb
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
CompletionKit::Engine.routes.draw do
|
|
2
|
+
root to: "prompts#index"
|
|
3
|
+
|
|
4
|
+
resources :prompts do
|
|
5
|
+
member do
|
|
6
|
+
post :publish
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
resources :datasets
|
|
11
|
+
resources :metrics
|
|
12
|
+
resources :criteria, controller: "criteria"
|
|
13
|
+
|
|
14
|
+
resources :runs do
|
|
15
|
+
member do
|
|
16
|
+
post :generate
|
|
17
|
+
post :judge
|
|
18
|
+
get :suggestion
|
|
19
|
+
post :suggest
|
|
20
|
+
post :apply_suggestion
|
|
21
|
+
end
|
|
22
|
+
resources :responses, only: [:show]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
resources :provider_credentials, only: [:index, :new, :create, :edit, :update] do
|
|
26
|
+
post :refresh, on: :member
|
|
27
|
+
end
|
|
28
|
+
post "refresh_models", to: "provider_credentials#refresh_all", as: :refresh_models
|
|
29
|
+
|
|
30
|
+
get "api_reference", to: "api_reference#index", as: :api_reference
|
|
31
|
+
|
|
32
|
+
namespace :api do
|
|
33
|
+
namespace :v1 do
|
|
34
|
+
resources :prompts do
|
|
35
|
+
member do
|
|
36
|
+
post :publish
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
resources :runs do
|
|
40
|
+
member do
|
|
41
|
+
post :generate
|
|
42
|
+
post :judge
|
|
43
|
+
end
|
|
44
|
+
resources :responses, only: [:index, :show]
|
|
45
|
+
end
|
|
46
|
+
resources :datasets
|
|
47
|
+
resources :metrics
|
|
48
|
+
resources :criteria, controller: "criteria"
|
|
49
|
+
resources :provider_credentials
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
post "mcp", to: "mcp#handle"
|
|
54
|
+
delete "mcp", to: "mcp#destroy"
|
|
55
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
class CreateCompletionKitTables < ActiveRecord::Migration[7.1]
|
|
2
|
+
def change
|
|
3
|
+
create_table :completion_kit_prompts do |t|
|
|
4
|
+
t.string :name, null: false
|
|
5
|
+
t.text :description
|
|
6
|
+
t.text :template, null: false
|
|
7
|
+
t.string :llm_model, null: false
|
|
8
|
+
t.string :family_key, null: false
|
|
9
|
+
t.integer :version_number, null: false
|
|
10
|
+
t.boolean :current, default: true, null: false
|
|
11
|
+
t.datetime :published_at
|
|
12
|
+
t.timestamps
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
add_index :completion_kit_prompts, :family_key
|
|
16
|
+
add_index :completion_kit_prompts, [:family_key, :version_number], unique: true, name: "idx_ck_prompts_family_version"
|
|
17
|
+
add_index :completion_kit_prompts, [:family_key, :current], name: "idx_ck_prompts_family_current"
|
|
18
|
+
|
|
19
|
+
create_table :completion_kit_datasets do |t|
|
|
20
|
+
t.string :name, null: false
|
|
21
|
+
t.text :csv_data, null: false
|
|
22
|
+
t.timestamps
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
create_table :completion_kit_criteria do |t|
|
|
26
|
+
t.string :name, null: false
|
|
27
|
+
t.text :description
|
|
28
|
+
t.timestamps
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
create_table :completion_kit_metrics do |t|
|
|
32
|
+
t.string :name, null: false
|
|
33
|
+
t.text :criteria
|
|
34
|
+
t.text :evaluation_steps
|
|
35
|
+
t.text :rubric_bands
|
|
36
|
+
t.string :key
|
|
37
|
+
t.timestamps
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
add_index :completion_kit_metrics, :key, unique: true
|
|
41
|
+
|
|
42
|
+
create_table :completion_kit_criteria_memberships do |t|
|
|
43
|
+
t.references :criteria, null: false, foreign_key: { to_table: :completion_kit_criteria }
|
|
44
|
+
t.references :metric, null: false, foreign_key: { to_table: :completion_kit_metrics }
|
|
45
|
+
t.integer :position
|
|
46
|
+
t.timestamps
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
create_table :completion_kit_provider_credentials do |t|
|
|
50
|
+
t.string :provider, null: false
|
|
51
|
+
t.text :api_key
|
|
52
|
+
t.text :api_endpoint
|
|
53
|
+
t.timestamps
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
add_index :completion_kit_provider_credentials, :provider, unique: true
|
|
57
|
+
|
|
58
|
+
create_table :completion_kit_runs do |t|
|
|
59
|
+
t.string :name
|
|
60
|
+
t.references :prompt, null: false, foreign_key: { to_table: :completion_kit_prompts }
|
|
61
|
+
t.references :dataset, foreign_key: { to_table: :completion_kit_datasets }
|
|
62
|
+
t.references :criteria, foreign_key: { to_table: :completion_kit_criteria }
|
|
63
|
+
t.string :judge_model
|
|
64
|
+
t.string :status
|
|
65
|
+
t.timestamps
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
create_table :completion_kit_responses do |t|
|
|
69
|
+
t.references :run, null: false, foreign_key: { to_table: :completion_kit_runs }
|
|
70
|
+
t.text :input_data
|
|
71
|
+
t.text :response_text
|
|
72
|
+
t.text :expected_output
|
|
73
|
+
t.timestamps
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
create_table :completion_kit_reviews do |t|
|
|
77
|
+
t.references :response, null: false, foreign_key: { to_table: :completion_kit_responses }
|
|
78
|
+
t.references :metric, foreign_key: { to_table: :completion_kit_metrics }
|
|
79
|
+
t.string :metric_name
|
|
80
|
+
t.text :criteria
|
|
81
|
+
t.string :status
|
|
82
|
+
t.decimal :ai_score, precision: 4, scale: 1
|
|
83
|
+
t.text :ai_feedback
|
|
84
|
+
t.timestamps
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class ReplaceCriteriaWithDirectMetricsOnRuns < ActiveRecord::Migration[7.0]
|
|
2
|
+
def change
|
|
3
|
+
create_table :completion_kit_run_metrics do |t|
|
|
4
|
+
t.references :run, null: false, foreign_key: { to_table: :completion_kit_runs }
|
|
5
|
+
t.references :metric, null: false, foreign_key: { to_table: :completion_kit_metrics }
|
|
6
|
+
t.integer :position
|
|
7
|
+
t.timestamps
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
remove_reference :completion_kit_runs, :criteria, foreign_key: { to_table: :completion_kit_criteria }
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class CreateCompletionKitModels < ActiveRecord::Migration[7.1]
|
|
2
|
+
def change
|
|
3
|
+
create_table :completion_kit_models do |t|
|
|
4
|
+
t.string :provider, null: false
|
|
5
|
+
t.string :model_id, null: false
|
|
6
|
+
t.string :display_name
|
|
7
|
+
t.string :status, null: false, default: "active"
|
|
8
|
+
t.boolean :supports_generation
|
|
9
|
+
t.boolean :supports_judging
|
|
10
|
+
t.text :generation_error
|
|
11
|
+
t.text :judging_error
|
|
12
|
+
t.datetime :probed_at
|
|
13
|
+
t.datetime :discovered_at
|
|
14
|
+
t.datetime :retired_at
|
|
15
|
+
t.timestamps
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
add_index :completion_kit_models, [:provider, :model_id], unique: true
|
|
19
|
+
end
|
|
20
|
+
end
|
data/db/migrate/20260401170001_add_discovery_columns_to_completion_kit_provider_credentials.rb
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
class AddDiscoveryColumnsToCompletionKitProviderCredentials < ActiveRecord::Migration[8.1]
|
|
2
|
+
def change
|
|
3
|
+
add_column :completion_kit_provider_credentials, :discovery_status, :string
|
|
4
|
+
add_column :completion_kit_provider_credentials, :discovery_current, :integer, default: 0
|
|
5
|
+
add_column :completion_kit_provider_credentials, :discovery_total, :integer, default: 0
|
|
6
|
+
end
|
|
7
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class CreateCompletionKitSuggestions < ActiveRecord::Migration[7.1]
|
|
2
|
+
def change
|
|
3
|
+
create_table :completion_kit_suggestions do |t|
|
|
4
|
+
t.references :run, null: false
|
|
5
|
+
t.references :prompt, null: false
|
|
6
|
+
t.text :reasoning
|
|
7
|
+
t.text :suggested_template
|
|
8
|
+
t.text :original_template
|
|
9
|
+
t.datetime :applied_at
|
|
10
|
+
t.timestamps
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "completion_kit"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require "turbo-rails"
|
|
2
|
+
require "heroicons-rails"
|
|
3
|
+
|
|
4
|
+
module CompletionKit
|
|
5
|
+
class Engine < ::Rails::Engine
|
|
6
|
+
isolate_namespace CompletionKit
|
|
7
|
+
|
|
8
|
+
initializer("completion_kit.inflections", before: :load_config_initializers) do
|
|
9
|
+
ActiveSupport::Inflector.inflections(:en) do |inflect|
|
|
10
|
+
inflect.irregular "criterion", "criteria"
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
paths.add "app/services", eager_load: true
|
|
15
|
+
|
|
16
|
+
def self.register_assets(app)
|
|
17
|
+
app.config.assets.precompile += %w( completion_kit/application.css completion_kit/evaluation_steps_controller.js completion_kit/logo.svg )
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
initializer("completion_kit.assets") { |app| Engine.register_assets(app) }
|
|
21
|
+
|
|
22
|
+
config.after_initialize do
|
|
23
|
+
cfg = CompletionKit.config
|
|
24
|
+
unless cfg.username || cfg.auth_strategy
|
|
25
|
+
Rails.logger.warn "[CompletionKit] WARNING: No authentication configured. All routes are publicly accessible."
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
config.generators do |g|
|
|
30
|
+
g.test_framework :rspec
|
|
31
|
+
g.fixture_replacement :factory_bot
|
|
32
|
+
g.factory_bot dir: "spec/factories"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require "completion_kit/version"
|
|
2
|
+
require "completion_kit/engine"
|
|
3
|
+
|
|
4
|
+
module CompletionKit
|
|
5
|
+
class ConfigurationError < StandardError; end
|
|
6
|
+
|
|
7
|
+
class Configuration
|
|
8
|
+
attr_accessor :openai_api_key, :anthropic_api_key, :ollama_api_key, :ollama_api_endpoint
|
|
9
|
+
attr_accessor :judge_model, :high_quality_threshold, :medium_quality_threshold
|
|
10
|
+
attr_accessor :username, :password, :auth_strategy, :api_token
|
|
11
|
+
|
|
12
|
+
def initialize
|
|
13
|
+
@openai_api_key = ENV['OPENAI_API_KEY']
|
|
14
|
+
@anthropic_api_key = ENV['ANTHROPIC_API_KEY']
|
|
15
|
+
@ollama_api_key = ENV['OLLAMA_API_KEY']
|
|
16
|
+
@ollama_api_endpoint = ENV['OLLAMA_API_ENDPOINT']
|
|
17
|
+
|
|
18
|
+
@judge_model = "gpt-4.1"
|
|
19
|
+
@high_quality_threshold = 4
|
|
20
|
+
@medium_quality_threshold = 3
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class << self
|
|
25
|
+
def config
|
|
26
|
+
@config ||= Configuration.new
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def configure
|
|
30
|
+
yield(config) if block_given?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def current_prompt(identifier)
|
|
34
|
+
Prompt.current_for(identifier)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def current_prompt_payload(identifier)
|
|
38
|
+
prompt = current_prompt(identifier)
|
|
39
|
+
|
|
40
|
+
{
|
|
41
|
+
name: prompt.name,
|
|
42
|
+
family_key: prompt.family_key,
|
|
43
|
+
version_number: prompt.version_number,
|
|
44
|
+
template: prompt.template,
|
|
45
|
+
generation_model: prompt.llm_model
|
|
46
|
+
}
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def render_current_prompt(identifier, variables = {})
|
|
50
|
+
prompt = current_prompt(identifier)
|
|
51
|
+
CsvProcessor.apply_variables(prompt, variables.stringify_keys)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module CompletionKit
|
|
2
|
+
class InstallGenerator < Rails::Generators::Base
|
|
3
|
+
source_root File.expand_path('templates', __dir__)
|
|
4
|
+
|
|
5
|
+
def create_initializer
|
|
6
|
+
template 'initializer.rb', 'config/initializers/completion_kit.rb'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def mount_engine
|
|
10
|
+
route "mount CompletionKit::Engine => '/completion_kit'"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def copy_migrations
|
|
14
|
+
rake 'completion_kit:install:migrations'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def show_readme
|
|
18
|
+
readme 'README'
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
=============================================
|
|
2
|
+
CompletionKit Installation Instructions
|
|
3
|
+
=============================================
|
|
4
|
+
|
|
5
|
+
Thank you for installing CompletionKit!
|
|
6
|
+
|
|
7
|
+
To complete the setup:
|
|
8
|
+
|
|
9
|
+
1. Run database migrations:
|
|
10
|
+
$ bin/rails db:migrate
|
|
11
|
+
|
|
12
|
+
2. Configure your API keys in config/initializers/completion_kit.rb
|
|
13
|
+
|
|
14
|
+
3. Access the CompletionKit interface at:
|
|
15
|
+
http://your-app-url/completion_kit
|
|
16
|
+
|
|
17
|
+
For more information, see the full documentation at:
|
|
18
|
+
https://github.com/completionkit/completion_kit
|
|
19
|
+
|
|
20
|
+
Happy prompt testing!
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# CompletionKit Configuration
|
|
2
|
+
|
|
3
|
+
# Configure CompletionKit
|
|
4
|
+
CompletionKit.configure do |config|
|
|
5
|
+
# 1. Environment variables:
|
|
6
|
+
# config.openai_api_key = ENV['OPENAI_API_KEY']
|
|
7
|
+
# config.anthropic_api_key = ENV['ANTHROPIC_API_KEY']
|
|
8
|
+
# config.ollama_api_key = ENV['OLLAMA_API_KEY']
|
|
9
|
+
# config.ollama_api_endpoint = ENV['OLLAMA_API_ENDPOINT']
|
|
10
|
+
|
|
11
|
+
# 2. Dotenv (.env file):
|
|
12
|
+
# require 'dotenv/load'
|
|
13
|
+
# config.openai_api_key = ENV['OPENAI_API_KEY'] if ENV['OPENAI_API_KEY']
|
|
14
|
+
|
|
15
|
+
# 3. Rails secrets (config/secrets.yml):
|
|
16
|
+
# secrets.yml ->
|
|
17
|
+
# development:
|
|
18
|
+
# completion_kit:
|
|
19
|
+
# openai_api_key: 'your-api-key'
|
|
20
|
+
# config.openai_api_key = Rails.application.secrets.completion_kit[:openai_api_key]
|
|
21
|
+
# config.anthropic_api_key = Rails.application.secrets.completion_kit[:anthropic_api_key]
|
|
22
|
+
# config.ollama_api_key = Rails.application.secrets.completion_kit[:ollama_api_key]
|
|
23
|
+
# config.ollama_api_endpoint = Rails.application.secrets.completion_kit[:ollama_api_endpoint]
|
|
24
|
+
|
|
25
|
+
# 4. Rails credentials (config/credentials.yml.enc):
|
|
26
|
+
# credentials.yml.enc ->
|
|
27
|
+
# completion_kit:
|
|
28
|
+
# openai_api_key: 'your-api-key'
|
|
29
|
+
# config.openai_api_key = Rails.application.credentials.completion_kit[:openai_api_key]
|
|
30
|
+
# config.anthropic_api_key = Rails.application.credentials.completion_kit[:anthropic_api_key]
|
|
31
|
+
# config.ollama_api_key = Rails.application.credentials.completion_kit[:ollama_api_key]
|
|
32
|
+
# config.ollama_api_endpoint = Rails.application.credentials.completion_kit[:ollama_api_endpoint]
|
|
33
|
+
|
|
34
|
+
# 5. Direct assignment:
|
|
35
|
+
# config.openai_api_key = 'your-api-key-here'
|
|
36
|
+
|
|
37
|
+
# API Authentication
|
|
38
|
+
# config.api_token = ENV['COMPLETION_KIT_API_TOKEN']
|
|
39
|
+
|
|
40
|
+
# Web UI Authentication
|
|
41
|
+
# config.username = "admin"
|
|
42
|
+
# config.password = ENV['COMPLETION_KIT_PASSWORD']
|
|
43
|
+
end
|