<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="374090" data-post-id="374090">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="vkryukov" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/vkryukov/120/39604_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  vkryukov
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I wrote a library specifically to support that: <a href="https://hexdocs.pm/openai_responses/readme.html" class="inline-onebox" rel="noopener nofollow ugc">OpenAI.Responses — OpenAI.Responses v0.8.4</a> (but the downside, of course, is that unlike Mike’s library, you can’t really switch providers). You might try it while you are waiting for ReqLLM to add this functionality.</p>
<p>One of the reasons I did that (as opposed to just using existing solutions like LangChain) is that if you only need to work with OpenAI, Responses API is superior: cheaper on average as tokens caching is more efficient, provides additional functionality such as web search, background requests, automatic conversation building via <code>previous_response_id</code>, support for multiple developer messages, etc.</p>
<p>But the downside is that it’s hard to make it fit into the “Chat Completions” world view that every other provider (following the original OpenAI’s API) is supporting.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374090" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-374090" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374090"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="374092" data-post-id="374092">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="vkryukov" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/vkryukov/120/39604_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  vkryukov
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Congratulations on launching ReqLLM! I really like the wide support of many providers and the composable design.</p>
<p>One quick question: you mentioned cost tracking, but I can’t find how to enable it - e.g. the following script only prints token usage, but not cost, even after running <code>mix req_llm.model_sync</code></p>
<pre data-code-wrap="elixir"><code class="lang-elixir">alias ReqLLM.Response

ReqLLM.put_key(:google_api_key, System.fetch_env!("GOOGLE_API_KEY"))
ReqLLM.put_key(:openai_api_key, System.fetch_env!("OPENAI_API_KEY"))
ReqLLM.put_key(:xai_api_key, System.fetch_env!("XAI_API_KEY"))

models = ["openai:gpt-5-nano", "xai:grok-4-fast-non-reasoning", "google:gemini-2.5-flash"]

models
|&gt; Enum.each(fn model -&gt;
  {:ok, response} = ReqLLM.generate_text(model, "What model are you?")

  text = Response.text(response)
  usage = Response.usage(response)
  IO.puts("#{model}: #{text}\n(#{inspect(usage)}\n\n")
end)
</code></pre>
<p>prints only token usage:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">openai:gpt-5-nano: I’m ChatGPT, a large language model created by OpenAI. I’m based on the GPT-4 architecture (the GPT-4 family of models). If you want, I can share more about my capabilities or limitations.
(%{input_tokens: 11, output_tokens: 824, total_tokens: 835}


xai:grok-4-fast-non-reasoning: I'm Grok, built by xAI.
(%{input_tokens: 132, output_tokens: 9, total_tokens: 142, live_search_sources: 0}


google:gemini-2.5-flash: I am a large language model, trained by Google.
(%{input_tokens: 6, output_tokens: 11, total_tokens: 17, cached_content_token_count: 0, total_token_count: 42}
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374092" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-374092" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374092"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="374101" data-post-id="374101">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mikehostetler" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mikehostetler/120/20620_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mikehostetler
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks!!! I’m growing more satisfied with how the library has come together!</p>
<p>re: Cost tracking, it should happen automatically and be available via the usage code you showed above. I’ll file a bug on this.</p>
<p>EDIT: I see you’ve already created an issue, THANK YOU!!!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374101" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-374101" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374101"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="374479" data-post-id="374479">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="javiercr" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/javiercr/120/39164_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  javiercr
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve been exploring <a href="https://hex.pm/packages/jido" rel="nofollow">jido</a> and <a href="https://hex.pm/packages/jido_ai" rel="nofollow">jido_ai</a> which integrates with <a class="mention" href="/u/brainlid" rel="nofollow">@brainlid</a> ‘s  <a href="https://github.com/brainlid/langchain" rel="noopener nofollow ugc">LangChain</a>. Since LangChain also abstracts HTTP requests to LLMs, I’m curious about how much overlap there is with ReqLLM.</p>
<p>I understand that LangChain covers many features outside the scope of ReqLLM, but if you were starting a new project with jido + jido_ai, which one would you choose?</p>
<p>Thanks again for your amazing contributions to the community!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374479" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-374479" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374479"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="374551" data-post-id="374551">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mikehostetler" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mikehostetler/120/20620_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mikehostetler
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks!</p>
<p><code>jido_ai</code> will be moving to use ReqLLM very shortly - and we will be dropping support for Langchain and Instructor.</p>
<p>API’s will be maintained - so you should be good to start and not worry too much about things changing.</p>
<p>LLM API’s are pretty dynamic, so I can’t promise 100% - but we’re doing our best to build a solid foundation for the Elixir community.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374551" data-batch-url="/posts/batch_likers">
                        7
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-374551" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374551"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
    <div class="postbit" id="375906" data-post-id="375906">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mikehostetler" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mikehostetler/120/20620_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mikehostetler
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h1><a name="p-375906-reqllm-100-rc7-released-1" class="anchor" href="#p-375906-reqllm-100-rc7-released-1" aria-label="Heading link" rel="nofollow"></a>ReqLLM 1.0.0-rc.7 Released</h1>
<p>I’ve published the <code>1.0.0-rc.7</code> release of ReqLLM with Elixir 1.19 support on Hex.</p>
<p>It’s been a journey to build this package. LLM Providers are all over the place - but with this release, I’ve been able to successfully prove that the high level API now supports <strong>136</strong> models via a custom fixture testing system I developed.</p>
<p>Several companies and projects have already begun integrating and battle testing this package.  With this release, I’m now focused on getting to a stable 1.0 release.</p>
<h2><a name="p-375906-whats-new-2" class="anchor" href="#p-375906-whats-new-2" aria-label="Heading link" rel="nofollow"></a>What’s New</h2>
<p><strong>Test Coverage</strong>: 136 models validated across 10 providers with fixture-based testing against 10 scenarios:</p>
<ul>
<li>Core: basic generation, streaming, token limits, usage metrics</li>
<li>Capabilities: multi-tool calling, tool round-trip, tool avoidance, object generation (streaming/non-streaming), reasoning tokens</li>
</ul>
<p><strong>Providers</strong>: Added Amazon Bedrock (streaming, multi-model, AWS SigV4 auth) and Z.AI (GLM-4.5/4.6, 204K context).</p>
<p><strong>Architecture</strong>: Simplified tool call handling with <code>ReqLLM.ToolCall</code> helpers, provider <code>normalize_model_id/1</code> callback, improved Context API with <code>append/2</code> and <code>prepend/2</code>.</p>
<p><strong>Examples</strong>: Full agent implementation and 16+ runnable scripts covering embeddings, multimodal analysis, tool calling, object generation, reasoning tokens, context reuse.</p>
<p><strong>Validation</strong>: Run <code>mix mc</code> to see coverage status. Use <code>REQ_LLM_FIXTURES_MODE=record</code> to test against live APIs.</p>
<h2><a name="p-375906-links-3" class="anchor" href="#p-375906-links-3" aria-label="Heading link" rel="nofollow"></a>Links</h2>
<ul>
<li><strong>Repo</strong>: <a href="https://github.com/agentjido/req_llm" class="inline-onebox" rel="noopener nofollow ugc">GitHub - agentjido/req_llm: Composable Elixir library for LLM interactions built on Req and Finch · GitHub</a></li>
<li><strong>Docs</strong>: <a href="https://hexdocs.pm/req_llm" class="inline-onebox" rel="noopener nofollow ugc">ReqLLM v1.17.0 — Documentation</a></li>
<li><strong>Changelog</strong>: <a href="https://github.com/agentjido/req_llm/blob/main/CHANGELOG.md" rel="noopener nofollow ugc">CHANGELOG.md</a></li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="375906" data-batch-url="/posts/batch_likers">
                        9
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-375906" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="375906"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
    <div class="postbit" id="376756" data-post-id="376756">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="manhvu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/manhvu/120/39832_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  manhvu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Nice! I hope to get this soon! I like design of Jido.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376756" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-376756" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376756"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="376761" data-post-id="376761">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hello, we are using Langchain in my team currently.</p>
<p>What would be the use cases where ReqLLM could be a better fit?</p>
<p>We are motsly calling chats with tool calling and structured outputs. Also opentelemetry is very important for us.</p>
<p>Thank you <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376761" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-376761" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376761"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="376774" data-post-id="376774">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mikehostetler" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mikehostetler/120/20620_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mikehostetler
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Langchain is great! If it works - keep using it</p>
<p>ReqLLM gives a bit “lower” API level access to LLM’s - which I needed for my Jido project</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376774" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-376774" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376774"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="376778" data-post-id="376778">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Alright ! Thank you.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="376778" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/reqllm-composable-llm-client-built-on-req/72514/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-376778" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="376778"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/72514/load_more?page=3">Load more posts</a>
</div></template></turbo-stream>