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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +121 -0
  3. data/README.md +467 -104
  4. data/lib/ruby_llm/providers/lms/anthropic_messages.rb +28 -0
  5. data/lib/ruby_llm/providers/lms/endpoints.rb +18 -0
  6. data/lib/ruby_llm/providers/lms/model_management.rb +59 -0
  7. data/lib/ruby_llm/providers/lms/models.rb +44 -12
  8. data/lib/ruby_llm/providers/lms/native_chat/conversation.rb +93 -0
  9. data/lib/ruby_llm/providers/lms/native_chat/streaming.rb +67 -0
  10. data/lib/ruby_llm/providers/lms/native_chat.rb +134 -0
  11. data/lib/ruby_llm/providers/lms/native_v1.rb +97 -0
  12. data/lib/ruby_llm/providers/lms/responses.rb +47 -0
  13. data/lib/ruby_llm/providers/lms/version.rb +15 -0
  14. data/lib/ruby_llm/providers/lms.rb +51 -1
  15. data/models.json +69 -454
  16. metadata +12 -37
  17. data/.flayignore +0 -1
  18. data/.github/workflows/ci.yml +0 -29
  19. data/.github/workflows/gitleaks.yml +0 -22
  20. data/.github/workflows/release.yml +0 -36
  21. data/.overcommit.yml +0 -31
  22. data/.rspec +0 -2
  23. data/.rubocop.yml +0 -29
  24. data/Archspec.rb +0 -14
  25. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_handle_a_multi_turn_conversation.yml +0 -92
  26. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_have_a_basic_conversation.yml +0 -45
  27. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_can_use_tools.yml +0 -129
  28. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_returns_the_raw_response.yml +0 -73
  29. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_openai_gpt_oss_20b_supports_streaming_responses.yml +0 -81
  30. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_can_have_a_basic_conversation.yml +0 -73
  31. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_returns_structured_output.yml +0 -73
  32. data/spec/fixtures/vcr_cassettes/rubyllm_chat_lms_qwen3_0_6b_bible_assistant_returns_the_raw_response.yml +0 -73
  33. data/spec/fixtures/vcr_cassettes/rubyllm_embedding_lms_text_embedding_nomic_embed_text_v1_5_embeds_one_text.yml +0 -828
  34. data/spec/fixtures/vcr_cassettes/rubyllm_embedding_lms_text_embedding_nomic_embed_text_v1_5_embeds_several_texts.yml +0 -2375
  35. data/spec/ruby_llm/chat_schema_spec.rb +0 -30
  36. data/spec/ruby_llm/chat_spec.rb +0 -35
  37. data/spec/ruby_llm/chat_streaming_spec.rb +0 -22
  38. data/spec/ruby_llm/chat_tools_spec.rb +0 -30
  39. data/spec/ruby_llm/embedding_spec.rb +0 -49
  40. data/spec/ruby_llm/image_spec.rb +0 -23
  41. data/spec/ruby_llm/models_spec.rb +0 -11
  42. data/spec/ruby_llm/moderation_spec.rb +0 -22
  43. data/spec/ruby_llm/providers/lms/connection_guard_spec.rb +0 -47
  44. data/spec/ruby_llm/providers/lms_spec.rb +0 -153
  45. data/spec/ruby_llm/rerank_spec.rb +0 -23
  46. data/spec/ruby_llm/speech_spec.rb +0 -25
  47. data/spec/ruby_llm/video_spec.rb +0 -27
  48. data/spec/spec_helper.rb +0 -26
  49. data/spec/support/models.rb +0 -29
  50. data/spec/support/rubyllm_configuration.rb +0 -14
  51. 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.1.1
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
- - ".flayignore"
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/releases
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
@@ -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
@@ -1,2 +0,0 @@
1
- --require spec_helper
2
- --format progress
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
@@ -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