ruby_llm-providers-lms 0.1.1 → 0.2.0
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 +4 -4
- data/CHANGELOG.md +121 -0
- data/README.md +467 -104
- data/lib/ruby_llm/providers/lms/anthropic_messages.rb +28 -0
- data/lib/ruby_llm/providers/lms/endpoints.rb +18 -0
- data/lib/ruby_llm/providers/lms/model_management.rb +59 -0
- data/lib/ruby_llm/providers/lms/models.rb +44 -12
- data/lib/ruby_llm/providers/lms/native_chat/conversation.rb +93 -0
- data/lib/ruby_llm/providers/lms/native_chat/streaming.rb +67 -0
- data/lib/ruby_llm/providers/lms/native_chat.rb +134 -0
- data/lib/ruby_llm/providers/lms/native_v1.rb +97 -0
- data/lib/ruby_llm/providers/lms/responses.rb +47 -0
- data/lib/ruby_llm/providers/lms/version.rb +15 -0
- data/lib/ruby_llm/providers/lms.rb +51 -1
- data/models.json +69 -454
- metadata +12 -37
- data/.flayignore +0 -1
- data/.github/workflows/ci.yml +0 -29
- data/.github/workflows/gitleaks.yml +0 -22
- data/.github/workflows/release.yml +0 -36
- data/.overcommit.yml +0 -31
- data/.rspec +0 -2
- data/.rubocop.yml +0 -29
- data/Archspec.rb +0 -14
- data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_handle_a_multi_turn_conversation.yml +0 -92
- data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_have_a_basic_conversation.yml +0 -45
- data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_use_tools.yml +0 -129
- data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_returns_the_raw_response.yml +0 -73
- data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_supports_streaming_responses.yml +0 -81
- data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_can_have_a_basic_conversation.yml +0 -73
- data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_returns_structured_output.yml +0 -73
- data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_returns_the_raw_response.yml +0 -73
- data/spec/fixtures/vcr_cassettes/rubyllm_embedding_lms_text_embedding_nomic_embed_text_v1_5_embeds_one_text.yml +0 -828
- data/spec/fixtures/vcr_cassettes/rubyllm_embedding_lms_text_embedding_nomic_embed_text_v1_5_embeds_several_texts.yml +0 -2375
- data/spec/ruby_llm/chat_schema_spec.rb +0 -30
- data/spec/ruby_llm/chat_spec.rb +0 -35
- data/spec/ruby_llm/chat_streaming_spec.rb +0 -22
- data/spec/ruby_llm/chat_tools_spec.rb +0 -30
- data/spec/ruby_llm/embedding_spec.rb +0 -49
- data/spec/ruby_llm/image_spec.rb +0 -23
- data/spec/ruby_llm/models_spec.rb +0 -11
- data/spec/ruby_llm/moderation_spec.rb +0 -22
- data/spec/ruby_llm/providers/lms/connection_guard_spec.rb +0 -47
- data/spec/ruby_llm/providers/lms_spec.rb +0 -153
- data/spec/ruby_llm/rerank_spec.rb +0 -23
- data/spec/ruby_llm/speech_spec.rb +0 -25
- data/spec/ruby_llm/video_spec.rb +0 -27
- data/spec/spec_helper.rb +0 -26
- data/spec/support/models.rb +0 -29
- data/spec/support/rubyllm_configuration.rb +0 -14
- data/spec/support/vcr_configuration.rb +0 -24
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby_llm-providers-lms
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- madbomber
|
|
@@ -31,54 +31,29 @@ executables: []
|
|
|
31
31
|
extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
|
33
33
|
files:
|
|
34
|
-
-
|
|
35
|
-
- ".github/workflows/ci.yml"
|
|
36
|
-
- ".github/workflows/gitleaks.yml"
|
|
37
|
-
- ".github/workflows/release.yml"
|
|
38
|
-
- ".overcommit.yml"
|
|
39
|
-
- ".rspec"
|
|
40
|
-
- ".rubocop.yml"
|
|
41
|
-
- Archspec.rb
|
|
34
|
+
- CHANGELOG.md
|
|
42
35
|
- LICENSE
|
|
43
36
|
- README.md
|
|
44
37
|
- lib/ruby_llm/providers/lms.rb
|
|
38
|
+
- lib/ruby_llm/providers/lms/anthropic_messages.rb
|
|
45
39
|
- lib/ruby_llm/providers/lms/connection_guard.rb
|
|
40
|
+
- lib/ruby_llm/providers/lms/endpoints.rb
|
|
41
|
+
- lib/ruby_llm/providers/lms/model_management.rb
|
|
46
42
|
- lib/ruby_llm/providers/lms/models.rb
|
|
43
|
+
- lib/ruby_llm/providers/lms/native_chat.rb
|
|
44
|
+
- lib/ruby_llm/providers/lms/native_chat/conversation.rb
|
|
45
|
+
- lib/ruby_llm/providers/lms/native_chat/streaming.rb
|
|
46
|
+
- lib/ruby_llm/providers/lms/native_v1.rb
|
|
47
|
+
- lib/ruby_llm/providers/lms/responses.rb
|
|
48
|
+
- lib/ruby_llm/providers/lms/version.rb
|
|
47
49
|
- models.json
|
|
48
|
-
- spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_handle_a_multi_turn_conversation.yml
|
|
49
|
-
- spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_have_a_basic_conversation.yml
|
|
50
|
-
- spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_use_tools.yml
|
|
51
|
-
- spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_returns_the_raw_response.yml
|
|
52
|
-
- spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_supports_streaming_responses.yml
|
|
53
|
-
- spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_can_have_a_basic_conversation.yml
|
|
54
|
-
- spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_returns_structured_output.yml
|
|
55
|
-
- spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_returns_the_raw_response.yml
|
|
56
|
-
- spec/fixtures/vcr_cassettes/rubyllm_embedding_lms_text_embedding_nomic_embed_text_v1_5_embeds_one_text.yml
|
|
57
|
-
- spec/fixtures/vcr_cassettes/rubyllm_embedding_lms_text_embedding_nomic_embed_text_v1_5_embeds_several_texts.yml
|
|
58
|
-
- spec/ruby_llm/chat_schema_spec.rb
|
|
59
|
-
- spec/ruby_llm/chat_spec.rb
|
|
60
|
-
- spec/ruby_llm/chat_streaming_spec.rb
|
|
61
|
-
- spec/ruby_llm/chat_tools_spec.rb
|
|
62
|
-
- spec/ruby_llm/embedding_spec.rb
|
|
63
|
-
- spec/ruby_llm/image_spec.rb
|
|
64
|
-
- spec/ruby_llm/models_spec.rb
|
|
65
|
-
- spec/ruby_llm/moderation_spec.rb
|
|
66
|
-
- spec/ruby_llm/providers/lms/connection_guard_spec.rb
|
|
67
|
-
- spec/ruby_llm/providers/lms_spec.rb
|
|
68
|
-
- spec/ruby_llm/rerank_spec.rb
|
|
69
|
-
- spec/ruby_llm/speech_spec.rb
|
|
70
|
-
- spec/ruby_llm/video_spec.rb
|
|
71
|
-
- spec/spec_helper.rb
|
|
72
|
-
- spec/support/models.rb
|
|
73
|
-
- spec/support/rubyllm_configuration.rb
|
|
74
|
-
- spec/support/vcr_configuration.rb
|
|
75
50
|
homepage: https://github.com/madbomber/ruby_llm-providers-lms
|
|
76
51
|
licenses:
|
|
77
52
|
- MIT
|
|
78
53
|
metadata:
|
|
79
54
|
homepage_uri: https://github.com/madbomber/ruby_llm-providers-lms
|
|
80
55
|
source_code_uri: https://github.com/madbomber/ruby_llm-providers-lms
|
|
81
|
-
changelog_uri: https://github.com/madbomber/ruby_llm-providers-lms/
|
|
56
|
+
changelog_uri: https://github.com/madbomber/ruby_llm-providers-lms/blob/main/CHANGELOG.md
|
|
82
57
|
bug_tracker_uri: https://github.com/madbomber/ruby_llm-providers-lms/issues
|
|
83
58
|
rubygems_mfa_required: 'true'
|
|
84
59
|
rdoc_options: []
|
data/.flayignore
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
spec/support/streaming_error_helpers.rb
|
data/.github/workflows/ci.yml
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
branches: ["main"]
|
|
6
|
-
push:
|
|
7
|
-
branches: ["main"]
|
|
8
|
-
|
|
9
|
-
permissions:
|
|
10
|
-
contents: read
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
test:
|
|
14
|
-
name: Ruby ${{ matrix.ruby-version }}
|
|
15
|
-
runs-on: ubuntu-latest
|
|
16
|
-
strategy:
|
|
17
|
-
fail-fast: false
|
|
18
|
-
matrix:
|
|
19
|
-
# Non-EOL Rubies only; must match the gemspec's required_ruby_version.
|
|
20
|
-
ruby-version: ["3.3", "3.4", "4.0"]
|
|
21
|
-
steps:
|
|
22
|
-
- uses: actions/checkout@v6
|
|
23
|
-
|
|
24
|
-
- uses: ruby/setup-ruby@v1
|
|
25
|
-
with:
|
|
26
|
-
ruby-version: ${{ matrix.ruby-version }}
|
|
27
|
-
bundler-cache: true
|
|
28
|
-
|
|
29
|
-
- run: bundle exec rake
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
name: Gitleaks
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
branches: ["main"]
|
|
6
|
-
push:
|
|
7
|
-
branches: ["main"]
|
|
8
|
-
|
|
9
|
-
permissions:
|
|
10
|
-
contents: read
|
|
11
|
-
|
|
12
|
-
jobs:
|
|
13
|
-
scan:
|
|
14
|
-
runs-on: ubuntu-latest
|
|
15
|
-
steps:
|
|
16
|
-
- uses: actions/checkout@v6
|
|
17
|
-
with:
|
|
18
|
-
fetch-depth: 0
|
|
19
|
-
|
|
20
|
-
- uses: gitleaks/gitleaks-action@v2
|
|
21
|
-
env:
|
|
22
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
tags:
|
|
6
|
-
- "v*"
|
|
7
|
-
|
|
8
|
-
permissions:
|
|
9
|
-
contents: read
|
|
10
|
-
|
|
11
|
-
jobs:
|
|
12
|
-
publish:
|
|
13
|
-
name: Build and publish
|
|
14
|
-
runs-on: ubuntu-latest
|
|
15
|
-
steps:
|
|
16
|
-
- uses: actions/checkout@v6
|
|
17
|
-
|
|
18
|
-
- uses: ruby/setup-ruby@v1
|
|
19
|
-
with:
|
|
20
|
-
ruby-version: "3.4"
|
|
21
|
-
bundler-cache: true
|
|
22
|
-
|
|
23
|
-
- run: bundle exec rake
|
|
24
|
-
|
|
25
|
-
- name: Build gem
|
|
26
|
-
run: gem build ruby_llm-providers-lms.gemspec
|
|
27
|
-
|
|
28
|
-
- name: Publish to RubyGems
|
|
29
|
-
run: |
|
|
30
|
-
mkdir -p "$HOME/.gem"
|
|
31
|
-
touch "$HOME/.gem/credentials"
|
|
32
|
-
chmod 0600 "$HOME/.gem/credentials"
|
|
33
|
-
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > "$HOME/.gem/credentials"
|
|
34
|
-
gem push ruby_llm-providers-lms-*.gem
|
|
35
|
-
env:
|
|
36
|
-
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_AUTH_TOKEN }}
|
data/.overcommit.yml
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
PreCommit:
|
|
2
|
-
RuboCop:
|
|
3
|
-
enabled: true
|
|
4
|
-
auto_correct: true
|
|
5
|
-
on_warn: fail
|
|
6
|
-
|
|
7
|
-
Flay:
|
|
8
|
-
enabled: true
|
|
9
|
-
include:
|
|
10
|
-
- lib/**/*.rb
|
|
11
|
-
- spec/**/*.rb
|
|
12
|
-
mass_threshold: 70
|
|
13
|
-
|
|
14
|
-
ArchSpec:
|
|
15
|
-
enabled: true
|
|
16
|
-
command: ['bundle', 'exec', 'archspec', 'check']
|
|
17
|
-
on_warn: fail
|
|
18
|
-
|
|
19
|
-
RSpec:
|
|
20
|
-
enabled: true
|
|
21
|
-
command: ['bundle', 'exec', 'rspec']
|
|
22
|
-
on_warn: fail
|
|
23
|
-
|
|
24
|
-
TrailingWhitespace:
|
|
25
|
-
enabled: true
|
|
26
|
-
auto_correct: true
|
|
27
|
-
|
|
28
|
-
Gitleaks:
|
|
29
|
-
enabled: true
|
|
30
|
-
required_executable: gitleaks
|
|
31
|
-
command: ['gitleaks', 'protect', '--staged', '--redact', '--verbose']
|
data/.rspec
DELETED
data/.rubocop.yml
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
plugins:
|
|
2
|
-
- rubocop-performance
|
|
3
|
-
- rubocop-rake
|
|
4
|
-
- rubocop-rspec
|
|
5
|
-
|
|
6
|
-
AllCops:
|
|
7
|
-
NewCops: enable
|
|
8
|
-
TargetRubyVersion: 3.3
|
|
9
|
-
Exclude:
|
|
10
|
-
- Archspec.rb
|
|
11
|
-
- vendor/**/*
|
|
12
|
-
- gemfiles/**/*
|
|
13
|
-
SuggestExtensions: false
|
|
14
|
-
|
|
15
|
-
Metrics/AbcSize:
|
|
16
|
-
Max: 80
|
|
17
|
-
Metrics/MethodLength:
|
|
18
|
-
Max: 40
|
|
19
|
-
CountAsOne:
|
|
20
|
-
- array
|
|
21
|
-
- hash
|
|
22
|
-
- heredoc
|
|
23
|
-
Metrics/BlockLength:
|
|
24
|
-
Exclude:
|
|
25
|
-
- spec/**/*.rb
|
|
26
|
-
RSpec/ExampleLength:
|
|
27
|
-
Enabled: false
|
|
28
|
-
RSpec/MultipleExpectations:
|
|
29
|
-
Enabled: false
|
data/Archspec.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
source 'lib/**/*.rb'
|
|
4
|
-
|
|
5
|
-
component :provider,
|
|
6
|
-
in: %w[
|
|
7
|
-
lib/ruby_llm/providers/lms.rb
|
|
8
|
-
lib/ruby_llm/providers/lms/**/*.rb
|
|
9
|
-
],
|
|
10
|
-
namespace: 'RubyLLM::Providers::LMS'
|
|
11
|
-
|
|
12
|
-
provider.cannot_reference_constants 'RSpec', 'WebMock', 'VCR'
|
|
13
|
-
|
|
14
|
-
preset :ruby_conventions
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
http_interactions:
|
|
3
|
-
- request:
|
|
4
|
-
method: post
|
|
5
|
-
uri: "http://localhost:1234/v1/chat/completions"
|
|
6
|
-
body:
|
|
7
|
-
encoding: UTF-8
|
|
8
|
-
string: '{"model":"openai/gpt-oss-20b","messages":[{"role":"user","content":"Who
|
|
9
|
-
created the programming language Ruby?"}],"stream":false}'
|
|
10
|
-
headers:
|
|
11
|
-
User-Agent:
|
|
12
|
-
- Faraday v2.14.3
|
|
13
|
-
Authorization:
|
|
14
|
-
- Bearer <AUTH_TOKEN>
|
|
15
|
-
Content-Type:
|
|
16
|
-
- application/json
|
|
17
|
-
Accept-Encoding:
|
|
18
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
19
|
-
Accept:
|
|
20
|
-
- "*/*"
|
|
21
|
-
response:
|
|
22
|
-
status:
|
|
23
|
-
code: 200
|
|
24
|
-
message: OK
|
|
25
|
-
headers:
|
|
26
|
-
X-Powered-By:
|
|
27
|
-
- Express
|
|
28
|
-
Content-Type:
|
|
29
|
-
- application/json; charset=utf-8
|
|
30
|
-
Content-Length:
|
|
31
|
-
- '859'
|
|
32
|
-
Etag:
|
|
33
|
-
- W/"35b-PewDTjLQ6JpT6DNfbSOXC+RE95Q"
|
|
34
|
-
Date:
|
|
35
|
-
- Fri, 11 Sep 2026 17:27:55 GMT
|
|
36
|
-
Connection:
|
|
37
|
-
- keep-alive
|
|
38
|
-
Keep-Alive:
|
|
39
|
-
- timeout=5
|
|
40
|
-
body:
|
|
41
|
-
encoding: ASCII-8BIT
|
|
42
|
-
string: !binary |-
|
|
43
|
-
ewogICJpZCI6ICJjaGF0Y21wbC1kNWkyM3Y2dWhhY3l6NnZ3Y29ldm8iLAogICJvYmplY3QiOiAiY2hhdC5jb21wbGV0aW9uIiwKICAiY3JlYXRlZCI6IDE3ODkxNDc2NzMsCiAgIm1vZGVsIjogIm9wZW5haS9ncHQtb3NzLTIwYiIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiUnVieSB3YXMgY3JlYXRlZCBieSAqKll1a2loaXJvIOKAnE1hdHrigJ0gTWF0c3Vtb3RvKiouIEhlIHN0YXJ0ZWQgZGV2ZWxvcGluZyB0aGUgbGFuZ3VhZ2UgaW4gMTk5MyBhbmQgcmVsZWFzZWQgaXQgcHVibGljbHkgaW4gMTk5NSwgYWltaW5nIHRvIGNvbWJpbmUgcGFydHMgb2YgaGlzIGZhdm9yaXRlIGxhbmd1YWdlcyB3aGlsZSBlbXBoYXNpemluZyBwcm9ncmFtbWVyIGhhcHBpbmVzcyBhbmQgcHJvZHVjdGl2aXR5LiIsCiAgICAgICAgInJlYXNvbmluZyI6ICJBbnN3ZXI6IFl1a2loaXJvIE1hdHN1bW90by4iLAogICAgICAgICJ0b29sX2NhbGxzIjogW10KICAgICAgfSwKICAgICAgImxvZ3Byb2JzIjogbnVsbCwKICAgICAgImZpbmlzaF9yZWFzb24iOiAic3RvcCIKICAgIH0KICBdLAogICJ1c2FnZSI6IHsKICAgICJwcm9tcHRfdG9rZW5zIjogNzQsCiAgICAiY29tcGxldGlvbl90b2tlbnMiOiA3MCwKICAgICJ0b3RhbF90b2tlbnMiOiAxNDQsCiAgICAiY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmluZ190b2tlbnMiOiA5CiAgICB9CiAgfSwKICAic3RhdHMiOiB7fSwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogIm9wZW5haS9ncHQtb3NzLTIwYiIKfQ==
|
|
44
|
-
recorded_at: Fri, 11 Sep 2026 17:27:55 GMT
|
|
45
|
-
- request:
|
|
46
|
-
method: post
|
|
47
|
-
uri: "http://localhost:1234/v1/chat/completions"
|
|
48
|
-
body:
|
|
49
|
-
encoding: UTF-8
|
|
50
|
-
string: '{"model":"openai/gpt-oss-20b","messages":[{"role":"user","content":"Who
|
|
51
|
-
created the programming language Ruby?"},{"role":"assistant","content":"Ruby
|
|
52
|
-
was created by **Yukihiro “Matz” Matsumoto**. He started developing the language
|
|
53
|
-
in 1993 and released it publicly in 1995, aiming to combine parts of his favorite
|
|
54
|
-
languages while emphasizing programmer happiness and productivity.","reasoning":"Answer:
|
|
55
|
-
Yukihiro Matsumoto.","reasoning_content":"Answer: Yukihiro Matsumoto."},{"role":"user","content":"What
|
|
56
|
-
year was Ruby first released?"}],"stream":false}'
|
|
57
|
-
headers:
|
|
58
|
-
User-Agent:
|
|
59
|
-
- Faraday v2.14.3
|
|
60
|
-
Authorization:
|
|
61
|
-
- Bearer <AUTH_TOKEN>
|
|
62
|
-
Content-Type:
|
|
63
|
-
- application/json
|
|
64
|
-
Accept-Encoding:
|
|
65
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
66
|
-
Accept:
|
|
67
|
-
- "*/*"
|
|
68
|
-
response:
|
|
69
|
-
status:
|
|
70
|
-
code: 200
|
|
71
|
-
message: OK
|
|
72
|
-
headers:
|
|
73
|
-
X-Powered-By:
|
|
74
|
-
- Express
|
|
75
|
-
Content-Type:
|
|
76
|
-
- application/json; charset=utf-8
|
|
77
|
-
Content-Length:
|
|
78
|
-
- '699'
|
|
79
|
-
Etag:
|
|
80
|
-
- W/"2bb-swU6OvSQEMJL7SbMLy00YyLs2b8"
|
|
81
|
-
Date:
|
|
82
|
-
- Fri, 11 Sep 2026 17:27:56 GMT
|
|
83
|
-
Connection:
|
|
84
|
-
- keep-alive
|
|
85
|
-
Keep-Alive:
|
|
86
|
-
- timeout=5
|
|
87
|
-
body:
|
|
88
|
-
encoding: ASCII-8BIT
|
|
89
|
-
string: !binary |-
|
|
90
|
-
ewogICJpZCI6ICJjaGF0Y21wbC1pczV2Z3hiczY1bzl4ZmNzOTdxaDUiLAogICJvYmplY3QiOiAiY2hhdC5jb21wbGV0aW9uIiwKICAiY3JlYXRlZCI6IDE3ODkxNDc2NzUsCiAgIm1vZGVsIjogIm9wZW5haS9ncHQtb3NzLTIwYiIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiUnVieSB3YXMgZmlyc3QgcmVsZWFzZWQgaW4gKioxOTk1KiogKHNwZWNpZmljYWxseSwgdmVyc2lvbuKArzAuOTUgb24gQXVndXN0IDI1LCAxOTk1KS4iLAogICAgICAgICJyZWFzb25pbmciOiAiTmVlZCBhbnN3ZXI6IDE5OTUuIiwKICAgICAgICAidG9vbF9jYWxscyI6IFtdCiAgICAgIH0sCiAgICAgICJsb2dwcm9icyI6IG51bGwsCiAgICAgICJmaW5pc2hfcmVhc29uIjogInN0b3AiCiAgICB9CiAgXSwKICAidXNhZ2UiOiB7CiAgICAicHJvbXB0X3Rva2VucyI6IDE0MiwKICAgICJjb21wbGV0aW9uX3Rva2VucyI6IDQ0LAogICAgInRvdGFsX3Rva2VucyI6IDE4NiwKICAgICJjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzIjogewogICAgICAicmVhc29uaW5nX3Rva2VucyI6IDcKICAgIH0KICB9LAogICJzdGF0cyI6IHt9LAogICJzeXN0ZW1fZmluZ2VycHJpbnQiOiAib3BlbmFpL2dwdC1vc3MtMjBiIgp9
|
|
91
|
-
recorded_at: Fri, 11 Sep 2026 17:27:56 GMT
|
|
92
|
-
recorded_with: VCR 6.4.0
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
http_interactions:
|
|
3
|
-
- request:
|
|
4
|
-
method: post
|
|
5
|
-
uri: "http://localhost:1234/v1/chat/completions"
|
|
6
|
-
body:
|
|
7
|
-
encoding: UTF-8
|
|
8
|
-
string: '{"model":"openai/gpt-oss-20b","messages":[{"role":"user","content":"What''s
|
|
9
|
-
2 + 2?"}],"stream":false}'
|
|
10
|
-
headers:
|
|
11
|
-
User-Agent:
|
|
12
|
-
- Faraday v2.14.3
|
|
13
|
-
Authorization:
|
|
14
|
-
- Bearer <AUTH_TOKEN>
|
|
15
|
-
Content-Type:
|
|
16
|
-
- application/json
|
|
17
|
-
Accept-Encoding:
|
|
18
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
19
|
-
Accept:
|
|
20
|
-
- "*/*"
|
|
21
|
-
response:
|
|
22
|
-
status:
|
|
23
|
-
code: 200
|
|
24
|
-
message: OK
|
|
25
|
-
headers:
|
|
26
|
-
X-Powered-By:
|
|
27
|
-
- Express
|
|
28
|
-
Content-Type:
|
|
29
|
-
- application/json; charset=utf-8
|
|
30
|
-
Content-Length:
|
|
31
|
-
- '623'
|
|
32
|
-
Etag:
|
|
33
|
-
- W/"26f-kDMLUbsR80Kkz1Ypkhx/iqdGgq8"
|
|
34
|
-
Date:
|
|
35
|
-
- Fri, 11 Sep 2026 17:27:56 GMT
|
|
36
|
-
Connection:
|
|
37
|
-
- keep-alive
|
|
38
|
-
Keep-Alive:
|
|
39
|
-
- timeout=5
|
|
40
|
-
body:
|
|
41
|
-
encoding: ASCII-8BIT
|
|
42
|
-
string: !binary |-
|
|
43
|
-
ewogICJpZCI6ICJjaGF0Y21wbC10ZzNjczZlbXZ3OG95d3Q1Zjh6cDgiLAogICJvYmplY3QiOiAiY2hhdC5jb21wbGV0aW9uIiwKICAiY3JlYXRlZCI6IDE3ODkxNDc2NzYsCiAgIm1vZGVsIjogIm9wZW5haS9ncHQtb3NzLTIwYiIsCiAgImNob2ljZXMiOiBbCiAgICB7CiAgICAgICJpbmRleCI6IDAsCiAgICAgICJtZXNzYWdlIjogewogICAgICAgICJyb2xlIjogImFzc2lzdGFudCIsCiAgICAgICAgImNvbnRlbnQiOiAiMuKAryvigK8y4oCvPeKArzQuIiwKICAgICAgICAicmVhc29uaW5nIjogIlNpbXBsZSBtYXRoLiIsCiAgICAgICAgInRvb2xfY2FsbHMiOiBbXQogICAgICB9LAogICAgICAibG9ncHJvYnMiOiBudWxsLAogICAgICAiZmluaXNoX3JlYXNvbiI6ICJzdG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21wdF90b2tlbnMiOiA3NCwKICAgICJjb21wbGV0aW9uX3Rva2VucyI6IDIzLAogICAgInRvdGFsX3Rva2VucyI6IDk3LAogICAgImNvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMiOiB7CiAgICAgICJyZWFzb25pbmdfdG9rZW5zIjogMwogICAgfQogIH0sCiAgInN0YXRzIjoge30sCiAgInN5c3RlbV9maW5nZXJwcmludCI6ICJvcGVuYWkvZ3B0LW9zcy0yMGIiCn0=
|
|
44
|
-
recorded_at: Fri, 11 Sep 2026 17:27:56 GMT
|
|
45
|
-
recorded_with: VCR 6.4.0
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
http_interactions:
|
|
3
|
-
- request:
|
|
4
|
-
method: post
|
|
5
|
-
uri: "http://localhost:1234/v1/chat/completions"
|
|
6
|
-
body:
|
|
7
|
-
encoding: UTF-8
|
|
8
|
-
string: '{"model":"openai/gpt-oss-20b","messages":[{"role":"user","content":"What''s
|
|
9
|
-
the weather in Berlin? Use 52.5200, 13.4050."}],"stream":false,"tools":[{"type":"function","function":{"name":"","description":"Gets
|
|
10
|
-
current weather for a location","parameters":{"type":"object","properties":{"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"}},"required":["latitude","longitude"],"additionalProperties":false,"strict":true}}}]}'
|
|
11
|
-
headers:
|
|
12
|
-
User-Agent:
|
|
13
|
-
- Faraday v2.14.3
|
|
14
|
-
Authorization:
|
|
15
|
-
- Bearer <AUTH_TOKEN>
|
|
16
|
-
Content-Type:
|
|
17
|
-
- application/json
|
|
18
|
-
Accept-Encoding:
|
|
19
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
20
|
-
Accept:
|
|
21
|
-
- "*/*"
|
|
22
|
-
response:
|
|
23
|
-
status:
|
|
24
|
-
code: 200
|
|
25
|
-
message: OK
|
|
26
|
-
headers:
|
|
27
|
-
X-Powered-By:
|
|
28
|
-
- Express
|
|
29
|
-
Content-Type:
|
|
30
|
-
- application/json; charset=utf-8
|
|
31
|
-
Content-Length:
|
|
32
|
-
- '879'
|
|
33
|
-
Etag:
|
|
34
|
-
- W/"36f-cxGzH3DZRnQutMMM+dsgqVyBZjg"
|
|
35
|
-
Date:
|
|
36
|
-
- Fri, 11 Sep 2026 17:28:04 GMT
|
|
37
|
-
Connection:
|
|
38
|
-
- keep-alive
|
|
39
|
-
Keep-Alive:
|
|
40
|
-
- timeout=5
|
|
41
|
-
body:
|
|
42
|
-
encoding: UTF-8
|
|
43
|
-
string: |-
|
|
44
|
-
{
|
|
45
|
-
"id": "chatcmpl-80f0o9tdkt82gtn9t6q8ta",
|
|
46
|
-
"object": "chat.completion",
|
|
47
|
-
"created": 1789147683,
|
|
48
|
-
"model": "openai/gpt-oss-20b",
|
|
49
|
-
"choices": [
|
|
50
|
-
{
|
|
51
|
-
"index": 0,
|
|
52
|
-
"message": {
|
|
53
|
-
"role": "assistant",
|
|
54
|
-
"content": "",
|
|
55
|
-
"reasoning": "We need to call weather function.",
|
|
56
|
-
"tool_calls": [
|
|
57
|
-
{
|
|
58
|
-
"type": "function",
|
|
59
|
-
"id": "117069919",
|
|
60
|
-
"function": {
|
|
61
|
-
"name": "",
|
|
62
|
-
"arguments": "{\"latitude\":\"52.5200\",\"longitude\":\"13.4050\"}"
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
},
|
|
67
|
-
"logprobs": null,
|
|
68
|
-
"finish_reason": "tool_calls"
|
|
69
|
-
}
|
|
70
|
-
],
|
|
71
|
-
"usage": {
|
|
72
|
-
"prompt_tokens": 146,
|
|
73
|
-
"completion_tokens": 42,
|
|
74
|
-
"total_tokens": 188,
|
|
75
|
-
"completion_tokens_details": {
|
|
76
|
-
"reasoning_tokens": 7
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
"stats": {},
|
|
80
|
-
"system_fingerprint": "openai/gpt-oss-20b"
|
|
81
|
-
}
|
|
82
|
-
recorded_at: Fri, 11 Sep 2026 17:28:04 GMT
|
|
83
|
-
- request:
|
|
84
|
-
method: post
|
|
85
|
-
uri: "http://localhost:1234/v1/chat/completions"
|
|
86
|
-
body:
|
|
87
|
-
encoding: UTF-8
|
|
88
|
-
string: '{"model":"openai/gpt-oss-20b","messages":[{"role":"user","content":"What''s
|
|
89
|
-
the weather in Berlin? Use 52.5200, 13.4050."},{"role":"assistant","content":"","tool_calls":[{"id":"117069919","type":"function","function":{"name":"","arguments":"{\"latitude\":\"52.5200\",\"longitude\":\"13.4050\"}"}}],"reasoning":"We
|
|
90
|
-
need to call weather function.","reasoning_content":"We need to call weather
|
|
91
|
-
function."},{"role":"tool","content":"Current weather at 52.5200, 13.4050:
|
|
92
|
-
15°C, Wind: 10 km/h","tool_call_id":"117069919"}],"stream":false,"tools":[{"type":"function","function":{"name":"","description":"Gets
|
|
93
|
-
current weather for a location","parameters":{"type":"object","properties":{"latitude":{"type":"string","description":"Latitude"},"longitude":{"type":"string","description":"Longitude"}},"required":["latitude","longitude"],"additionalProperties":false,"strict":true}}}]}'
|
|
94
|
-
headers:
|
|
95
|
-
User-Agent:
|
|
96
|
-
- Faraday v2.14.3
|
|
97
|
-
Authorization:
|
|
98
|
-
- Bearer <AUTH_TOKEN>
|
|
99
|
-
Content-Type:
|
|
100
|
-
- application/json
|
|
101
|
-
Accept-Encoding:
|
|
102
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
103
|
-
Accept:
|
|
104
|
-
- "*/*"
|
|
105
|
-
response:
|
|
106
|
-
status:
|
|
107
|
-
code: 200
|
|
108
|
-
message: OK
|
|
109
|
-
headers:
|
|
110
|
-
X-Powered-By:
|
|
111
|
-
- Express
|
|
112
|
-
Content-Type:
|
|
113
|
-
- application/json; charset=utf-8
|
|
114
|
-
Content-Length:
|
|
115
|
-
- '781'
|
|
116
|
-
Etag:
|
|
117
|
-
- W/"30d-lBARRVGlBGe9sqYIa3IIttf2Jg0"
|
|
118
|
-
Date:
|
|
119
|
-
- Fri, 11 Sep 2026 17:28:06 GMT
|
|
120
|
-
Connection:
|
|
121
|
-
- keep-alive
|
|
122
|
-
Keep-Alive:
|
|
123
|
-
- timeout=5
|
|
124
|
-
body:
|
|
125
|
-
encoding: ASCII-8BIT
|
|
126
|
-
string: !binary |-
|
|
127
|
-
ewogICJpZCI6ICJjaGF0Y21wbC1ud3NrZTh6ODhjdmQxazFrZHV6dSIsCiAgIm9iamVjdCI6ICJjaGF0LmNvbXBsZXRpb24iLAogICJjcmVhdGVkIjogMTc4OTE0NzY4NCwKICAibW9kZWwiOiAib3BlbmFpL2dwdC1vc3MtMjBiIiwKICAiY2hvaWNlcyI6IFsKICAgIHsKICAgICAgImluZGV4IjogMCwKICAgICAgIm1lc3NhZ2UiOiB7CiAgICAgICAgInJvbGUiOiAiYXNzaXN0YW50IiwKICAgICAgICAiY29udGVudCI6ICIqKkJlcmxpbiAoNTIuNTIwMOKAr04sIDEzLjQwNTDigK9FKSoqICBcbi0gKipUZW1wZXJhdHVyZToqKiB+MTXigK/CsEMgIFxuLSAqKldpbmQ6KiogfjEw4oCva20vaCAgXG5cblRoZSBmb3JlY2FzdCBpcyBtaWxkIHdpdGggY2xlYXIgc2tpZXMuIEVuam95IHlvdXIgZGF5ISIsCiAgICAgICAgInJlYXNvbmluZyI6ICJXZSBuZWVkIHRvIHJlc3BvbmQgd2l0aCB3ZWF0aGVyLiIsCiAgICAgICAgInRvb2xfY2FsbHMiOiBbXQogICAgICB9LAogICAgICAibG9ncHJvYnMiOiBudWxsLAogICAgICAiZmluaXNoX3JlYXNvbiI6ICJzdG9wIgogICAgfQogIF0sCiAgInVzYWdlIjogewogICAgInByb21wdF90b2tlbnMiOiAyMTMsCiAgICAiY29tcGxldGlvbl90b2tlbnMiOiA2NywKICAgICJ0b3RhbF90b2tlbnMiOiAyODAsCiAgICAiY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyI6IHsKICAgICAgInJlYXNvbmluZ190b2tlbnMiOiA3CiAgICB9CiAgfSwKICAic3RhdHMiOiB7fSwKICAic3lzdGVtX2ZpbmdlcnByaW50IjogIm9wZW5haS9ncHQtb3NzLTIwYiIKfQ==
|
|
128
|
-
recorded_at: Fri, 11 Sep 2026 17:28:06 GMT
|
|
129
|
-
recorded_with: VCR 6.4.0
|
data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_returns_the_raw_response.yml
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
http_interactions:
|
|
3
|
-
- request:
|
|
4
|
-
method: post
|
|
5
|
-
uri: "http://localhost:1234/v1/chat/completions"
|
|
6
|
-
body:
|
|
7
|
-
encoding: UTF-8
|
|
8
|
-
string: '{"model":"openai/gpt-oss-20b","messages":[{"role":"user","content":"What
|
|
9
|
-
is the capital of France?"}],"stream":false}'
|
|
10
|
-
headers:
|
|
11
|
-
User-Agent:
|
|
12
|
-
- Faraday v2.14.3
|
|
13
|
-
Authorization:
|
|
14
|
-
- Bearer <AUTH_TOKEN>
|
|
15
|
-
Content-Type:
|
|
16
|
-
- application/json
|
|
17
|
-
Accept-Encoding:
|
|
18
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
19
|
-
Accept:
|
|
20
|
-
- "*/*"
|
|
21
|
-
response:
|
|
22
|
-
status:
|
|
23
|
-
code: 200
|
|
24
|
-
message: OK
|
|
25
|
-
headers:
|
|
26
|
-
X-Powered-By:
|
|
27
|
-
- Express
|
|
28
|
-
Content-Type:
|
|
29
|
-
- application/json; charset=utf-8
|
|
30
|
-
Content-Length:
|
|
31
|
-
- '648'
|
|
32
|
-
Etag:
|
|
33
|
-
- W/"288-2+2eF5UFjDweyMb8HxN1pATbogM"
|
|
34
|
-
Date:
|
|
35
|
-
- Fri, 11 Sep 2026 17:27:53 GMT
|
|
36
|
-
Connection:
|
|
37
|
-
- keep-alive
|
|
38
|
-
Keep-Alive:
|
|
39
|
-
- timeout=5
|
|
40
|
-
body:
|
|
41
|
-
encoding: UTF-8
|
|
42
|
-
string: |-
|
|
43
|
-
{
|
|
44
|
-
"id": "chatcmpl-sli6wgxdxqbgf872enruvr",
|
|
45
|
-
"object": "chat.completion",
|
|
46
|
-
"created": 1789147670,
|
|
47
|
-
"model": "openai/gpt-oss-20b",
|
|
48
|
-
"choices": [
|
|
49
|
-
{
|
|
50
|
-
"index": 0,
|
|
51
|
-
"message": {
|
|
52
|
-
"role": "assistant",
|
|
53
|
-
"content": "The capital of France is Paris.",
|
|
54
|
-
"reasoning": "Answer straightforward.",
|
|
55
|
-
"tool_calls": []
|
|
56
|
-
},
|
|
57
|
-
"logprobs": null,
|
|
58
|
-
"finish_reason": "stop"
|
|
59
|
-
}
|
|
60
|
-
],
|
|
61
|
-
"usage": {
|
|
62
|
-
"prompt_tokens": 74,
|
|
63
|
-
"completion_tokens": 20,
|
|
64
|
-
"total_tokens": 94,
|
|
65
|
-
"completion_tokens_details": {
|
|
66
|
-
"reasoning_tokens": 3
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
"stats": {},
|
|
70
|
-
"system_fingerprint": "openai/gpt-oss-20b"
|
|
71
|
-
}
|
|
72
|
-
recorded_at: Fri, 11 Sep 2026 17:27:53 GMT
|
|
73
|
-
recorded_with: VCR 6.4.0
|