main
1# frozen_string_literal: true
2
3RSpec.describe Net::Llm::Ollama do
4 subject(:client) { described_class.new }
5
6 describe "#chat" do
7 let(:messages) { [{ role: "user", content: "Hello" }] }
8
9 context "without streaming" do
10 it "POST /api/chat", :vcr do
11 result = client.chat(messages)
12
13 expect(result["message"]["content"]).to eq("Hello! How can I help you today?")
14 expect(result["done"]).to eq(true)
15 end
16
17 it "raises on HTTP error" do
18 stub_request(:post, "http://localhost:11434/api/chat")
19 .to_return(status: 500, body: "Server error")
20
21 result = client.chat(messages)
22 expect(result["code"]).to eq("500")
23 expect(result["body"]).to eq("Server error")
24 end
25
26 it "POST /api/chat with tools", :vcr do
27 tools = [{
28 type: "function",
29 function: {
30 name: "get_weather",
31 description: "Get weather for a city",
32 parameters: {
33 type: "object",
34 properties: {
35 city: { type: "string" }
36 },
37 required: ["city"]
38 }
39 }
40 }]
41
42 messages = [{ role: "user", content: "What is the weather for New York city?" }]
43 result = client.chat(messages, tools)
44
45 expect(result).not_to be_nil
46 expect(result["model"]).to eq("gpt-oss")
47 expect(result["created_at"]).not_to be_empty
48 expect(result["done"]).to be(true)
49 expect(result["done_reason"]).to eq("stop")
50 expect(result["message"]).to eq({
51 "role" => "assistant",
52 "content" => "",
53 "thinking" => "User asks for weather in New York city. We can call get_weather.",
54 "tool_calls" => [{
55 "id" => "call_z382j2c3",
56 "function" => {
57 "index" => 0,
58 "name" => "get_weather",
59 "arguments" => {
60 "city" => "New York"
61 }}
62 }]
63 })
64 end
65
66 it "omits tools from request when empty array provided" do
67 stub_request(:post, "http://localhost:11434/api/chat")
68 .with { |req|
69 body = JSON.parse(req.body)
70 body["model"] == "gpt-oss" &&
71 body["stream"] == false &&
72 !body.key?("tools")
73 }
74 .to_return(status: 200, body: { message: { content: "Hi" }, done: true }.to_json)
75
76 result = client.chat(messages, [])
77 expect(result["message"]["content"]).to eq("Hi")
78 end
79 end
80
81 context "with streaming" do
82 it "yields each chunk to the block", :vcr do
83 results = []
84 client.chat(messages) { |chunk| results << chunk }
85
86 expect(results).to match_array([
87 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.067169123Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "We"}, "done" => false},
88 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.088628857Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " need"}, "done" => false},
89 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.110277238Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " to"}, "done" => false},
90 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.131673311Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " respond"}, "done" => false},
91 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.153229608Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " to"}, "done" => false},
92 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.174795132Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " a"}, "done" => false},
93 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.196327623Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " greeting"}, "done" => false},
94 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.218504501Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "."}, "done" => false},
95 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.239647938Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " Probably"}, "done" => false},
96 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.26142463Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " just"}, "done" => false},
97 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.28283973Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " a"}, "done" => false},
98 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.304284706Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " friendly"}, "done" => false},
99 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.325865659Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " greeting"}, "done" => false},
100 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.347317348Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " back"}, "done" => false},
101 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.369709382Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "."}, "done" => false},
102 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.52273047Z", "message" => {"role" => "assistant", "content" => "Hello"}, "done" => false},
103 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.544154958Z", "message" => {"role" => "assistant", "content" => "!"}, "done" => false},
104 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.565550401Z", "message" => {"role" => "assistant", "content" => " How"}, "done" => false},
105 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.586855583Z", "message" => {"role" => "assistant", "content" => " can"}, "done" => false},
106 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.608626505Z", "message" => {"role" => "assistant", "content" => " I"}, "done" => false},
107 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.630033709Z", "message" => {"role" => "assistant", "content" => " help"}, "done" => false},
108 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.651348891Z", "message" => {"role" => "assistant", "content" => " you"}, "done" => false},
109 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.672703566Z", "message" => {"role" => "assistant", "content" => " today"}, "done" => false},
110 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.694059765Z", "message" => {"role" => "assistant", "content" => "?"}, "done" => false},
111 {"model" => "gpt-oss", "created_at" => "2025-12-23T22:54:10.715377561Z", "message" => {"role" => "assistant", "content" => ""}, "done" => true, "done_reason" => "stop", "total_duration" => 932816840, "load_duration" => 112096225, "prompt_eval_count" => 68, "prompt_eval_duration" => 104278159, "eval_count" => 34, "eval_duration" => 704053402}
112 ])
113 end
114
115 it "includes tools", :vcr do
116 tools = [{
117 type: "function",
118 function: {
119 name: "get_weather",
120 description: "Get weather for a city",
121 parameters: {
122 type: "object",
123 properties: {
124 city: { type: "string" }
125 }
126 }
127 }
128 }]
129
130 results = []
131 messages = [{ role: "user", content: "What is the weather for New York city?" }]
132 client.chat(messages, tools) { |chunk| results << chunk }
133
134 expect(results).to match_array([
135 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.481641057Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "We"}, "done" => false},
136 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.503077697Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " have"}, "done" => false},
137 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.524275577Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " a"}, "done" => false},
138 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.545633098Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " tool"}, "done" => false},
139 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.566915517Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " function"}, "done" => false},
140 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.588397603Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " get"}, "done" => false},
141 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.609964659Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "_weather"}, "done" => false},
142 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.631305078Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "."}, "done" => false},
143 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.652867676Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " The"}, "done" => false},
144 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.674240075Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " user"}, "done" => false},
145 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.695760053Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " asks"}, "done" => false},
146 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.71723216Z", "message" => {"role" => "assistant", "content" => "", "thinking" => ":"}, "done" => false},
147 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.738721269Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " \""}, "done" => false},
148 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.760194418Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "What"}, "done" => false},
149 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.782239397Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " is"}, "done" => false},
150 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.804483301Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " the"}, "done" => false},
151 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.826510957Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " weather"}, "done" => false},
152 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.848290404Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " for"}, "done" => false},
153 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.870277052Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " New"}, "done" => false},
154 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.891559321Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " York"}, "done" => false},
155 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.912660518Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " city"}, "done" => false},
156 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.934175527Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "?\""}, "done" => false},
157 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.955522548Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " We"}, "done" => false},
158 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.976710579Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " need"}, "done" => false},
159 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:29.998294858Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " to"}, "done" => false},
160 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.019524117Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " call"}, "done" => false},
161 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.040632768Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " the"}, "done" => false},
162 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.062132187Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " function"}, "done" => false},
163 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.083688533Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "."}, "done" => false},
164 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.104912341Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " Provide"}, "done" => false},
165 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.126506319Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " arguments"}, "done" => false},
166 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.147899176Z", "message" => {"role" => "assistant", "content" => "", "thinking" => ":"}, "done" => false},
167 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.169298917Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " city"}, "done" => false},
168 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.190979688Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "=\""}, "done" => false},
169 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.213552523Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "New"}, "done" => false},
170 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.234882782Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " York"}, "done" => false},
171 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.256257546Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "\"."}, "done" => false},
172 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.277533272Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " Then"}, "done" => false},
173 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.298835529Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " output"}, "done" => false},
174 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.320181548Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " the"}, "done" => false},
175 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.341659196Z", "message" => {"role" => "assistant", "content" => "", "thinking" => " result"}, "done" => false},
176 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.363157332Z", "message" => {"role" => "assistant", "content" => "", "thinking" => "."}, "done" => false},
177 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:02:30.834167383Z", "message" => {"role" => "assistant", "content" => "", "tool_calls" => [{"id" => "call_t81u3wss", "function" => {"index" => 0, "name" => "get_weather", "arguments" => {"city" => "New York"}}}]}, "done" => true, "done_reason" => "stop", "total_duration" => 1621481172, "load_duration" => 101376342, "prompt_eval_count" => 129, "prompt_eval_duration" => 100474990, "eval_count" => 67, "eval_duration" => 1402407907}
178 ])
179 end
180 end
181 end
182
183 describe "#generate" do
184 context "without streaming" do
185 it "POST /api/generate", :vcr do
186 result = client.generate("Write a poem")
187
188 expect(result["context"]).to_not be_empty
189 expect(result["created_at"]).to_not be_empty
190 expect(result["done"]).to be(true)
191 expect(result["done_reason"]).to eq("stop")
192 expect(result["model"]).to eq("gpt-oss")
193 expect(result["response"]).to start_with("**Silicon Leaves**")
194 end
195 end
196
197 context "with streaming" do
198 it "yields each chunk", :vcr do
199 results = []
200 client.generate("Write a poem") { |chunk| results << chunk }
201
202 expect(results).to match_array([
203 {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.73517822Z", "response" => "", "thinking" => "The", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.756474395Z", "response" => "", "thinking" => " user", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.777601662Z", "response" => "", "thinking" => " says", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.798716124Z", "response" => "", "thinking" => " \"", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.819998944Z", "response" => "", "thinking" => "Write", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.841196453Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.862871393Z", "response" => "", "thinking" => " poem", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.884568916Z", "response" => "", "thinking" => "\".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.906032697Z", "response" => "", "thinking" => " No", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.927944184Z", "response" => "", "thinking" => " additional", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.949560453Z", "response" => "", "thinking" => " constraints", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.971295527Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:27.992976408Z", "response" => "", "thinking" => " So", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.014769771Z", "response" => "", "thinking" => " we", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.036643867Z", "response" => "", "thinking" => " need", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.05888686Z", "response" => "", "thinking" => " to", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.08062035Z", "response" => "", "thinking" => " write", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.101970868Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.123407398Z", "response" => "", "thinking" => " poem", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.144611139Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.166061325Z", "response" => "", "thinking" => " We", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.187334536Z", "response" => "", "thinking" => " should", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.208586598Z", "response" => "", "thinking" => " produce", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.229809545Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.251090251Z", "response" => "", "thinking" => " poem", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.272272351Z", "response" => "", "thinking" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.293583294Z", "response" => "", "thinking" => " perhaps", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.314750676Z", "response" => "", "thinking" => " an", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.335983983Z", "response" => "", "thinking" => " original", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.35721264Z", "response" => "", "thinking" => " poem", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.37840523Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.399647443Z", "response" => "", "thinking" => " The", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.421201786Z", "response" => "", "thinking" => " style", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.442602518Z", "response" => "", "thinking" => " is", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.463840384Z", "response" => "", "thinking" => " up", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.486056896Z", "response" => "", "thinking" => " to", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.509214134Z", "response" => "", "thinking" => " us", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.530637208Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.552129484Z", "response" => "", "thinking" => " It's", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.573411793Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.595032971Z", "response" => "", "thinking" => " creative", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.616132155Z", "response" => "", "thinking" => " task", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.637176965Z", "response" => "", "thinking" => ";", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.658338396Z", "response" => "", "thinking" => " we", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.679497783Z", "response" => "", "thinking" => " need", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.700603288Z", "response" => "", "thinking" => " to", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.721736726Z", "response" => "", "thinking" => " produce", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.742981655Z", "response" => "", "thinking" => " something", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.764175236Z", "response" => "", "thinking" => " thoughtful", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.785512479Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.806694338Z", "response" => "", "thinking" => " Maybe", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.827948564Z", "response" => "", "thinking" => " we", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.849230723Z", "response" => "", "thinking" => " can", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.870449272Z", "response" => "", "thinking" => " choose", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.891713166Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.913395941Z", "response" => "", "thinking" => " theme", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.936399609Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.958107742Z", "response" => "", "thinking" => " No", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:28.97961221Z", "response" => "", "thinking" => " constraints", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.000866135Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.022392906Z", "response" => "", "thinking" => " We'll", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.044112049Z", "response" => "", "thinking" => " just", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.066386511Z", "response" => "", "thinking" => " deliver", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.08828342Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.11021827Z", "response" => "", "thinking" => " poem", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.131844669Z", "response" => "", "thinking" => ".\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.153632171Z", "response" => "", "thinking" => "We", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.175448348Z", "response" => "", "thinking" => " should", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.197064086Z", "response" => "", "thinking" => " be", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.21893169Z", "response" => "", "thinking" => " careful", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.24096697Z", "response" => "", "thinking" => " to", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.263069828Z", "response" => "", "thinking" => " produce", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.284972838Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.307058945Z", "response" => "", "thinking" => " good", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.328903455Z", "response" => "", "thinking" => " poem", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.350945838Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.373163893Z", "response" => "", "thinking" => " Maybe", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.395229711Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.417247579Z", "response" => "", "thinking" => " free", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.438820827Z", "response" => "", "thinking" => " verse", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.460076976Z", "response" => "", "thinking" => " poem", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.481236303Z", "response" => "", "thinking" => " about", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.502971437Z", "response" => "", "thinking" => " time", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.523558253Z", "response" => "", "thinking" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.545083952Z", "response" => "", "thinking" => " memory", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.566253267Z", "response" => "", "thinking" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.587483007Z", "response" => "", "thinking" => " or", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.608420004Z", "response" => "", "thinking" => " nature", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.629662388Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.650870717Z", "response" => "", "thinking" => " We", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.672165891Z", "response" => "", "thinking" => " can", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.69356489Z", "response" => "", "thinking" => " produce", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.714820408Z", "response" => "", "thinking" => " an", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.736006666Z", "response" => "", "thinking" => " evoc", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.757202081Z", "response" => "", "thinking" => "ative", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.779043305Z", "response" => "", "thinking" => " piece", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.800941897Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.821901647Z", "response" => "", "thinking" => " Maybe", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.843178706Z", "response" => "", "thinking" => " mention", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.864232384Z", "response" => "", "thinking" => " imagery", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.88598483Z", "response" => "", "thinking" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.907060219Z", "response" => "", "thinking" => " etc", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.928058752Z", "response" => "", "thinking" => ".\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.949261841Z", "response" => "", "thinking" => "We", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.970467616Z", "response" => "", "thinking" => " can", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:29.991518057Z", "response" => "", "thinking" => " also", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.012788744Z", "response" => "", "thinking" => " add", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.034114455Z", "response" => "", "thinking" => " title", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.055449424Z", "response" => "", "thinking" => " or", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.076737564Z", "response" => "", "thinking" => " not", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.097992922Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.119261555Z", "response" => "", "thinking" => " The", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.140461879Z", "response" => "", "thinking" => " user", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.161706898Z", "response" => "", "thinking" => " just", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.183613385Z", "response" => "", "thinking" => " said", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.205013156Z", "response" => "", "thinking" => " \"", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.226328557Z", "response" => "", "thinking" => "Write", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.247552256Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.268821199Z", "response" => "", "thinking" => " poem", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.289990455Z", "response" => "", "thinking" => "\".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.311213472Z", "response" => "", "thinking" => " We'll", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.332434876Z", "response" => "", "thinking" => " produce", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.353654817Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.374842207Z", "response" => "", "thinking" => " poem", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.396199087Z", "response" => "", "thinking" => " with", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.417370326Z", "response" => "", "thinking" => " some", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.438619443Z", "response" => "", "thinking" => " structure", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.460148317Z", "response" => "", "thinking" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.481715423Z", "response" => "", "thinking" => " maybe", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.503014314Z", "response" => "", "thinking" => " with", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.52431656Z", "response" => "", "thinking" => " rhyme", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.545613166Z", "response" => "", "thinking" => " or", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.56684483Z", "response" => "", "thinking" => " free", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.589123249Z", "response" => "", "thinking" => " verse", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.611239151Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.632826035Z", "response" => "", "thinking" => " Perhaps", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.654179428Z", "response" => "", "thinking" => " we", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.675615417Z", "response" => "", "thinking" => " can", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.696928675Z", "response" => "", "thinking" => " do", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.718135361Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.739547235Z", "response" => "", "thinking" => " son", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.760858198Z", "response" => "", "thinking" => "net", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.781646825Z", "response" => "", "thinking" => "?", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.803503909Z", "response" => "", "thinking" => " Or", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.825026551Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.846307618Z", "response" => "", "thinking" => " ha", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.868118445Z", "response" => "", "thinking" => "iku", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.88899625Z", "response" => "", "thinking" => "?", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.910257179Z", "response" => "", "thinking" => " The", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.931542163Z", "response" => "", "thinking" => " instruction", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.95255843Z", "response" => "", "thinking" => " is", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.973803278Z", "response" => "", "thinking" => " generic", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:30.995573297Z", "response" => "", "thinking" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.017135945Z", "response" => "", "thinking" => " we", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.038674719Z", "response" => "", "thinking" => " can", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.060114014Z", "response" => "", "thinking" => " choose", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.081939478Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.103491165Z", "response" => "", "thinking" => " Let's", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.124966859Z", "response" => "", "thinking" => " produce", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.14632952Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.168323893Z", "response" => "", "thinking" => " free", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.19012969Z", "response" => "", "thinking" => " verse", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.212001321Z", "response" => "", "thinking" => " piece", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.233821816Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.255657329Z", "response" => "", "thinking" => " We'll", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.277389427Z", "response" => "", "thinking" => " include", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.299216535Z", "response" => "", "thinking" => " some", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.321253748Z", "response" => "", "thinking" => " imagery", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.343065457Z", "response" => "", "thinking" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.364923482Z", "response" => "", "thinking" => " perhaps", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.386626415Z", "response" => "", "thinking" => " exploring", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.408503316Z", "response" => "", "thinking" => " memory", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.430421716Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.452103459Z", "response" => "", "thinking" => " We'll", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.474248827Z", "response" => "", "thinking" => " make", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.495445344Z", "response" => "", "thinking" => " it", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.517014073Z", "response" => "", "thinking" => " evoc", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.538250977Z", "response" => "", "thinking" => "ative", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.559481127Z", "response" => "", "thinking" => ".\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.580815154Z", "response" => "", "thinking" => "Let's", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.602052588Z", "response" => "", "thinking" => " produce", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.623198189Z", "response" => "", "thinking" => " something", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.644487201Z", "response" => "", "thinking" => " like", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.665654913Z", "response" => "", "thinking" => ":\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.687016272Z", "response" => "", "thinking" => "Title", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.708179716Z", "response" => "", "thinking" => ":", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.729493354Z", "response" => "", "thinking" => " \"", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.751063637Z", "response" => "", "thinking" => "Echo", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.772490108Z", "response" => "", "thinking" => "es", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.793893115Z", "response" => "", "thinking" => " in", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.815595968Z", "response" => "", "thinking" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.838245146Z", "response" => "", "thinking" => " L", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.860068336Z", "response" => "", "thinking" => "attice", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.881822586Z", "response" => "", "thinking" => "\"\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.903224431Z", "response" => "", "thinking" => "Then", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.925103426Z", "response" => "", "thinking" => " lines", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.946446179Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.968029817Z", "response" => "", "thinking" => " Let's", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:31.988745456Z", "response" => "", "thinking" => " produce", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.010338341Z", "response" => "", "thinking" => " ~", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.031710761Z", "response" => "", "thinking" => "20", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.053063222Z", "response" => "", "thinking" => " lines", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.074433327Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.095981838Z", "response" => "", "thinking" => " We'll", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.117622133Z", "response" => "", "thinking" => " keep", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.139011935Z", "response" => "", "thinking" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.160223931Z", "response" => "", "thinking" => " consistent", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.181489929Z", "response" => "", "thinking" => " line", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.202492901Z", "response" => "", "thinking" => " length", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.223998081Z", "response" => "", "thinking" => " maybe", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.246350239Z", "response" => "", "thinking" => ".\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.268329093Z", "response" => "", "thinking" => "Alright", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.290125993Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.311413722Z", "response" => "", "thinking" => " We'll", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.333024661Z", "response" => "", "thinking" => " produce", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.354166966Z", "response" => "", "thinking" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.502872719Z", "response" => "**", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.524146922Z", "response" => "Echo", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.545312301Z", "response" => "es", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.566630718Z", "response" => " in", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.587914309Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.609152345Z", "response" => " L", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.630519143Z", "response" => "attice", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.651759823Z", "response" => "**\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.67372955Z", "response" => "In", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.695237665Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.716769285Z", "response" => " hush", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.738127307Z", "response" => " between", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.759610094Z", "response" => " two", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.781014674Z", "response" => " sunsets", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.802412992Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.823381128Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.844704825Z", "response" => "I", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.866170029Z", "response" => " hear", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.886967593Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.908584403Z", "response" => " faint", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.929858116Z", "response" => "est", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.951122411Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.972141383Z", "response" => " footsteps", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:32.993396471Z", "response" => "—", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.014716701Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.03604104Z", "response" => "a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.057321866Z", "response" => " rhythm", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.079376442Z", "response" => " that", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.101312616Z", "response" => " hum", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.122271003Z", "response" => "s", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.144149247Z", "response" => " in", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.165086715Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.186458343Z", "response" => " marrow", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.208164181Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.229050242Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.250680568Z", "response" => " earth", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.272073295Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.293308706Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.314651269Z", "response" => "a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.336007467Z", "response" => " lull", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.357476599Z", "response" => "aby", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.379494306Z", "response" => " written", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.401414509Z", "response" => " in", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.423082265Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.444922237Z", "response" => " cracks", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.466770875Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.488613481Z", "response" => " stone", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.510034061Z", "response" => ".\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.531711877Z", "response" => "The", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.553082783Z", "response" => " sky", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.574487293Z", "response" => " ble", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.596194463Z", "response" => "eds", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.617278939Z", "response" => " gold", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.638645828Z", "response" => " into", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.660154093Z", "response" => " ind", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.681428818Z", "response" => "igo", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.702760831Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.724078015Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.745493897Z", "response" => "while", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.766786515Z", "response" => " shadows", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.788512682Z", "response" => " stretch", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.810058999Z", "response" => " like", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.831387726Z", "response" => " lazy", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.852790773Z", "response" => " vines", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.874382215Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.896041796Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.917553358Z", "response" => "cl", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.93940969Z", "response" => "inging", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.960894171Z", "response" => " to", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:33.982268744Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.003759286Z", "response" => " edges", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.025217707Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.04657612Z", "response" => " memory", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.068119722Z", "response" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.089550571Z", "response" => " \n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.110371139Z", "response" => "B", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.132184611Z", "response" => "ene", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.153885259Z", "response" => "ath", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.175768552Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.19751657Z", "response" => " weight", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.219185178Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.240955769Z", "response" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.262701753Z", "response" => " thousand", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.284475079Z", "response" => " words", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.306614335Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.329170669Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.35126481Z", "response" => "the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.373646344Z", "response" => " forest", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.395744934Z", "response" => " exh", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.41779955Z", "response" => "ales", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.43926741Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.460749966Z", "response" => " releasing", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.482022687Z", "response" => " mist", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.503291852Z", "response" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.524503136Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.545736152Z", "response" => "Leaves", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.566980009Z", "response" => " dance", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.588194961Z", "response" => " in", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.609415784Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.630742026Z", "response" => " breath", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.652014115Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.673500409Z", "response" => " forgotten", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.694952569Z", "response" => " names", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.716841383Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.739213539Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.760550581Z", "response" => "each", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.781929192Z", "response" => " gust", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.803271654Z", "response" => " carrying", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.824545006Z", "response" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.845783933Z", "response" => " promise", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.867022069Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.888371485Z", "response" => " return", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.909601655Z", "response" => ".\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.930860009Z", "response" => "I", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.9520797Z", "response" => " walk", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.973364293Z", "response" => " on", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:34.994759986Z", "response" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.016029591Z", "response" => " path", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.037447556Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.05871673Z", "response" => " rust", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.080019638Z", "response" => "ed", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.101247735Z", "response" => " iron", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.122505187Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.143729597Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.165699804Z", "response" => "where", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.187249287Z", "response" => " time", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.208770157Z", "response" => " is", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.230311064Z", "response" => " measured", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.252405656Z", "response" => " in", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.273794396Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.295471199Z", "response" => " pulse", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.317228735Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.338150454Z", "response" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.359770821Z", "response" => " river", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.381135666Z", "response" => "—", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.402430438Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.423792037Z", "response" => "its", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.445726597Z", "response" => " current", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.467152387Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.489301482Z", "response" => " a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.510899356Z", "response" => " mirror", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.532721945Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.554604006Z", "response" => " what", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.576413019Z", "response" => " has", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.598485199Z", "response" => " been", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.62021919Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.642165332Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.664213507Z", "response" => "and", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.685751669Z", "response" => " what", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.707557085Z", "response" => " might", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.729625568Z", "response" => " yet", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.75117456Z", "response" => " unfold", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.772528324Z", "response" => ".\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.793857993Z", "response" => "When", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.815231564Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.836487563Z", "response" => " night", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.857790471Z", "response" => " settles", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.87905165Z", "response" => " thick", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.900391578Z", "response" => " and", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.921614074Z", "response" => " quiet", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.942891594Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.964146571Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:35.986218441Z", "response" => "the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.008009139Z", "response" => " stars", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.02937208Z", "response" => " take", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.050695788Z", "response" => " up", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.072037178Z", "response" => " their", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.093359042Z", "response" => " places", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.114689892Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.13597704Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.157303152Z", "response" => "quiet", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.178674659Z", "response" => " witnesses", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.199966847Z", "response" => " to", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.221303138Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.242573585Z", "response" => " endless", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.264022889Z", "response" => " loop", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.285272777Z", "response" => ":", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.306547461Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.327805204Z", "response" => "to", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.349047487Z", "response" => " rise", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.370307494Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.392172012Z", "response" => " to", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.413766771Z", "response" => " fall", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.435650715Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.45677699Z", "response" => " to", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.478203541Z", "response" => " rise", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.499515626Z", "response" => " again", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.520474665Z", "response" => ".\n\n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.542021944Z", "response" => "And", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.563231957Z", "response" => " in", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.584633821Z", "response" => " that", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.605815981Z", "response" => " silent", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.627340497Z", "response" => " lattice", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.648876155Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.670710135Z", "response" => " light", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.692227688Z", "response" => " and", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.713374381Z", "response" => " dark", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.734650138Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.756272588Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.7774448Z", "response" => "I", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.799609955Z", "response" => " find", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.820760836Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.842068122Z", "response" => " echo", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.863362594Z", "response" => " of", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.88470155Z", "response" => " my", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.906107993Z", "response" => " own", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.927383409Z", "response" => " heart", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.948828736Z", "response" => "—", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.970238616Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:36.991584535Z", "response" => "a", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.01297101Z", "response" => " steady", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.034785774Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.056689857Z", "response" => " gentle", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.078151735Z", "response" => " th", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.100367255Z", "response" => "rum", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.122364373Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.144335142Z", "response" => " \n", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.165859057Z", "response" => "echo", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.187311186Z", "response" => "ing", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.209771228Z", "response" => " through", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.231884155Z", "response" => " the", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.253321106Z", "response" => " vast", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.275073893Z", "response" => "ness", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.296587298Z", "response" => ",", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.318587863Z", "response" => " forever", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.339486568Z", "response" => " home", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.360873785Z", "response" => ".", "done" => false}, {"model" => "gpt-oss", "created_at" => "2025-12-23T23:05:37.38229745Z", "response" => "", "done" => true, "done_reason" => "stop", "context" => [200006, 17360, 200008, 3575, 553, 17554, 162016, 11, 261, 4410, 6439, 2359, 22203, 656, 7788, 17527, 558, 87447, 100594, 25, 220, 1323, 19, 12, 3218, 198, 6576, 3521, 25, 220, 1323, 20, 12, 899, 12, 1860, 279, 30377, 289, 25, 14093, 279, 2, 13888, 18403, 25, 8450, 11, 49159, 11, 1721, 13, 21030, 2804, 413, 7360, 395, 1753, 3176, 13, 200007, 200006, 1428, 200008, 10930, 261, 41339, 200007, 200006, 173781, 200005, 35644, 200008, 976, 1825, 5003, 392, 10930, 261, 41339, 4050, 3004, 6623, 31060, 13, 2632, 581, 1309, 316, 5067, 261, 41339, 13, 1416, 1757, 10635, 261, 41339, 11, 12951, 448, 4756, 41339, 13, 623, 2713, 382, 869, 316, 765, 13, 7744, 261, 12879, 5296, 26, 581, 1309, 316, 10635, 3543, 56830, 13, 17158, 581, 665, 5655, 261, 9660, 13, 3004, 31060, 13, 46830, 1327, 7000, 261, 41339, 364, 2167, 1757, 413, 25120, 316, 10635, 261, 1899, 41339, 13, 17158, 261, 2240, 33111, 41339, 1078, 1058, 11, 8197, 11, 503, 7867, 13, 1416, 665, 10635, 448, 139616, 1799, 9047, 13, 17158, 8633, 69307, 11, 5178, 364, 2167, 665, 1217, 1147, 3809, 503, 625, 13, 623, 1825, 1327, 2059, 392, 10930, 261, 41339, 4050, 46830, 10635, 261, 41339, 483, 1236, 8866, 11, 10112, 483, 170389, 503, 2240, 33111, 13, 30391, 581, 665, 621, 261, 2391, 4301, 30, 2604, 261, 2472, 11169, 30, 623, 21179, 382, 21081, 11, 581, 665, 5655, 13, 41021, 10635, 261, 2240, 33111, 9047, 13, 46830, 3931, 1236, 69307, 11, 12951, 29457, 8197, 13, 46830, 1520, 480, 139616, 1799, 364, 58369, 10635, 3543, 1299, 1402, 5415, 25, 392, 107130, 268, 306, 290, 451, 59096, 2678, 19371, 8698, 13, 41021, 10635, 6574, 455, 8698, 13, 46830, 3357, 261, 20434, 2543, 5517, 10112, 364, 170638, 13, 46830, 10635, 13, 200007, 200006, 173781, 200005, 17196, 200008, 410, 107130, 268, 306, 290, 451, 59096, 91587, 637, 290, 178146, 2870, 1920, 161403, 11, 4066, 40, 9598, 290, 65716, 376, 328, 110905, 2322, 4066, 64, 55476, 484, 3402, 82, 306, 290, 130496, 328, 290, 13440, 11, 4066, 64, 196171, 13788, 7582, 306, 290, 65753, 328, 14352, 364, 976, 17307, 10483, 5575, 8568, 1511, 1383, 6235, 11, 4066, 7032, 64501, 21638, 1299, 29082, 129936, 11, 4066, 565, 42531, 316, 290, 22569, 328, 8197, 13, 11691, 33, 1900, 725, 290, 6049, 328, 261, 26791, 6391, 11, 4066, 3086, 19458, 104925, 3459, 11, 52057, 11494, 13, 4066, 149882, 18487, 306, 290, 16289, 328, 40205, 8747, 11, 4066, 21309, 15498, 25328, 261, 18070, 328, 622, 364, 40, 5229, 402, 261, 3104, 328, 20294, 295, 17069, 11, 4066, 4522, 1058, 382, 26489, 306, 290, 43839, 328, 261, 20608, 2322, 4066, 1348, 2208, 11, 261, 28026, 328, 1412, 853, 1339, 11, 4066, 427, 1412, 3572, 5073, 63492, 364, 5958, 290, 4856, 178734, 17154, 326, 15095, 11, 4066, 3086, 13701, 2304, 869, 1043, 9610, 11, 4066, 60879, 65643, 316, 290, 34768, 11453, 25, 4066, 935, 16601, 11, 316, 5617, 11, 316, 16601, 2418, 364, 3436, 306, 484, 37716, 102427, 328, 4207, 326, 8883, 11, 4066, 40, 1646, 290, 3713, 328, 922, 2316, 5604, 2322, 4066, 64, 37403, 11, 25748, 325, 10896, 11, 4066, 7290, 289, 1819, 290, 11332, 2816, 11, 22264, 2237, 13], "total_duration" => 9904537310, "load_duration" => 101266814, "prompt_eval_count" => 70, "prompt_eval_duration" => 89599623, "eval_count" => 453, "eval_duration" => 9630197107}
204 ])
205 end
206 end
207 end
208
209 describe "#embeddings", :vcr do
210 it "POST /api/embed", :vcr do
211 result = client.embeddings("Hello world")
212 expect(result).to eq({
213 "code" => "501",
214 "body" => "{\"error\":\"this model does not support embeddings\"}"
215 })
216 end
217 end
218
219 describe "#tags" do
220 it "GET /api/tags", :vcr do
221 result = client.tags
222
223 expect(result["models"]).to be_an(Array)
224 expect(result["models"][0]["name"]).to eq("devstral-2:123b")
225 end
226 end
227
228 describe "#show" do
229 let(:model_name) { "gpt-oss" }
230
231 it "POST /api/show", :vcr do
232 result = client.show(model_name)
233
234 expect(result["license"]).to_not be_nil
235 expect(result["license"]).to_not be_empty
236 expect(result["modelfile"]).to_not be_empty
237 expect(result["parameters"]).to eq("temperature 1")
238 expect(result["template"]).to_not be_empty
239 expect(result["details"]).to eq({
240 "parent_model" => "",
241 "format" => "gguf",
242 "family" => "gptoss",
243 "families" => ["gptoss"],
244 "parameter_size" => "20.9B",
245 "quantization_level" => "MXFP4"
246 })
247 expect(result["model_info"]).to eq({
248 "general.architecture" => "gptoss",
249 "general.file_type" => 4,
250 "general.parameter_count" => 20914757184,
251 "general.quantization_version" => 2,
252 "gptoss.attention.head_count" => 64,
253 "gptoss.attention.head_count_kv" => 8,
254 "gptoss.attention.key_length" => 64,
255 "gptoss.attention.layer_norm_rms_epsilon" => 1.0e-05,
256 "gptoss.attention.sliding_window" => 128,
257 "gptoss.attention.value_length" => 64,
258 "gptoss.block_count" => 24,
259 "gptoss.context_length" => 131072,
260 "gptoss.embedding_length" => 2880,
261 "gptoss.expert_count" => 32,
262 "gptoss.expert_used_count" => 4,
263 "gptoss.feed_forward_length" => 2880,
264 "gptoss.rope.freq_base" => 150000,
265 "gptoss.rope.scaling.factor" => 32,
266 "gptoss.rope.scaling.original_context_length" => 4096,
267 "tokenizer.ggml.add_bos_token" => false,
268 "tokenizer.ggml.add_eos_token" => false,
269 "tokenizer.ggml.add_padding_token" => false,
270 "tokenizer.ggml.bos_token_id" => 199998,
271 "tokenizer.ggml.eos_token_id" => 199999,
272 "tokenizer.ggml.eos_token_ids" => nil,
273 "tokenizer.ggml.merges" => nil,
274 "tokenizer.ggml.model" => "gpt2",
275 "tokenizer.ggml.padding_token_id" => 199999,
276 "tokenizer.ggml.pre" => "default",
277 "tokenizer.ggml.scores" => nil,
278 "tokenizer.ggml.token_type" => nil,
279 "tokenizer.ggml.tokens" => nil
280 })
281 expect(result["capabilities"]).to match_array(["completion", "tools", "thinking"])
282 expect(result["modified_at"]).to eq("2025-12-01T17:04:25.989063821-07:00")
283 expect(result["tensors"]).to_not be_empty
284 end
285 end
286 end