-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathRakefile
More file actions
80 lines (69 loc) · 1.91 KB
/
Rakefile
File metadata and controls
80 lines (69 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# frozen_string_literal: true
require "bundler/gem_tasks"
require "rspec/core/rake_task"
cassettes = File.join(__dir__, "spec", "fixtures", "cassettes")
remotes = %w[openai google anthropic deepseek]
locals = %w[ollama llamacpp]
bundler = ENV["bundler"] || "bundle"
desc "Run linter"
task :rubocop do
sh "#{bundler} exec rubocop"
end
namespace :spec do
namespace :remote do
desc "Clear remote cassette cache"
task :clear do
remotes.each { rm_rf File.join(cassettes, _1) }
end
end
desc "Run remote tests"
task :remote do
paths = ["spec/readme_spec.rb", "spec/{#{remotes.join(",")}}/**/*.rb"]
specs = Dir[*paths].shuffle
sh "#{bundler} exec rspec #{specs.join(' ')}"
end
namespace :local do
desc "Clear local cassette cache"
task :clear do
locals.each { rm_rf File.join(cassettes, _1) }
end
end
end
desc "Run all tests"
task :spec do
sh "#{bundler} exec rspec spec"
end
desc "Start a console with all providers loaded"
task :console do
require "llm"
require "dotenv"
Dotenv.load
openai = LLM.openai(key: ENV["OPENAI_SECRET"])
google = LLM.google(key: ENV["GEMINI_SECRET"])
anthropic = LLM.anthropic(key: ENV["ANTHROPIC_SECRET"])
deepseek = LLM.deepseek(key: ENV["DEEPSEEK_SECRET"])
xai = LLM.xai(key: ENV["XAI_SECRET"])
binding.irb
end
namespace :'models.dev' do
desc "Download models.dev metadata"
task :download do
require "net/http"
require "json"
client = Net::HTTP.new "models.dev", 443
client.use_ssl = true
res = client.request Net::HTTP::Get.new("/api.json")
case res
when Net::HTTPOK
providers = %w[openai google anthropic xai zai deepseek]
models = JSON.parse(res.body)
providers.each do |provider|
File.binwrite "data/#{provider}.json", JSON.pretty_generate(models[provider])
end
else
warn("error: #{res.class}")
exit 1
end
end
end
task default: %i[spec rubocop]