octowombat

octowombat

I tried to run the first LLM example “Your first LLM agent” in LiveBook. Firstly I got a weird Setup block:

Mix.install([
  {{mix_dep:jido}},
  {{mix_dep:jido_ai}},
  {{mix_dep:req_llm}}
])

which I could easily sort out. I set my OpenAI API key as directed as a secret in LiveBook which the block reported true as expected. However when I tried to run the “Ask the Agent” block I get the following;

10:49:25.330 [warning] Jido.AI.Reasoning.ReAct using ephemeral token secret (no configured :react_token_secret); checkpoint tokens expire on VM restart

10:49:25.335 [error] Provider failed to build streaming request: %ReqLLM.Error.API.Request{reason: "Failed to build Anthropic stream request: %ReqLLM.Error.Invalid.Parameter{parameter: ":api_key option, config :req_llm, anthropic_api_key, or ANTHROPIC_API_KEY env var (.env via dotenvy)", splode: nil, bread_crumbs: 
, vars: 
, path: 
, stacktrace: #Splode.Stacktrace<>, class: :invalid}", status: nil, response_body: nil, request_body: nil, cause: nil, headers: nil, splode: nil, bread_crumbs: 
, vars: 
, path: 
, stacktrace: #Splode.Stacktrace<>, class: :api}

10:49:25.335 [error] Failed to start HTTP streaming: {:provider_build_failed, %ReqLLM.Error.API.Request{reason: "Failed to build Anthropic stream request: %ReqLLM.Error.Invalid.Parameter{parameter: ":api_key option, config :req_llm, anthropic_api_key, or ANTHROPIC_API_KEY env var (.env via dotenvy)", splode: nil, bread_crumbs: 
, vars: 
, path: 
, stacktrace: #Splode.Stacktrace<>, class: :invalid}", status: nil, response_body: nil, request_body: nil, cause: nil, headers: nil, splode: nil, bread_crumbs: 
, vars: 
, path: 
, stacktrace: #Splode.Stacktrace<>, class: :api}}

10:49:25.335 [error] Failed to start streaming: {:http_streaming_failed, {:provider_build_failed, %ReqLLM.Error.API.Request{reason: "Failed to build Anthropic stream request: %ReqLLM.Error.Invalid.Parameter{parameter: ":api_key option, config :req_llm, anthropic_api_key, or ANTHROPIC_API_KEY env var (.env via dotenvy)", splode: nil, bread_crumbs: 
, vars: 
, path: 
, stacktrace: #Splode.Stacktrace<>, class: :invalid}", status: nil, response_body: nil, request_body: nil, cause: nil, headers: nil, splode: nil, bread_crumbs: 
, vars: 
, path: 
, stacktrace: #Splode.Stacktrace<>, class: :api}}}
Greeting: {:error,
{:failed, :error,
{:http_streaming_failed,
{:provider_build_failed,
%ReqLLM.Error.API.Request{
reason: "Failed to build Anthropic stream request: %ReqLLM.Error.Invalid.Parameter{parameter: ":api_key option, config :req_llm, anthropic_api_key, or ANTHROPIC_API_KEY env var (.env via dotenvy)", splode: nil, bread_crumbs: 
, vars: 
, path: 
, stacktrace: #Splode.Stacktrace<>, class: :invalid}",
status: nil,
response_body: nil,
request_body: nil,
cause: nil,
headers: nil,
splode: nil,
bread_crumbs: 
,
vars: 
,
path: 
,
stacktrace: #Splode.Stacktrace<>,
class: :api
}}}}}

No idea why its using Claude/Anthropic? Apart from if I do the following in the LiveBook;

Jido.AI.model_aliases()

it returns

%{
  image: "openai:gpt-image-1",
  thinking: "anthropic:claude-sonnet-4-20250514",
  embedding: "openai:text-embedding-3-small",
  reasoning: "anthropic:claude-sonnet-4-20250514",
  planning: "anthropic:claude-sonnet-4-20250514",
  fast: "anthropic:claude-haiku-4-5",
  capable: "anthropic:claude-sonnet-4-20250514"
}

which shows :fast as configured to be "anthropic:claude-haiku-4-5"

What am I doing wrong?

Thanks in advance

Mike

Showing Posts 1 to 10

ken-kost

ken-kost

Anthropic is by default, you need to override your aliases:

config :jido_ai, :model_aliases,  
  fast: "openai:gpt-4o-mini",  
  reasoning: "openai:gpt-4o",  
  planning: "openai:gpt-4o",  
  capable: "openai:gpt-4o"
octowombat

octowombat OP

I merely followed the docs/guide. Thanks.

ken-kost

ken-kost

You can make a PR for docs, add a line that would prevent your problem for someone else. :cowboy_hat_face:

code is never done and docs are its last frontier

octowombat

octowombat OP

Will look to do so when I figure out where best to make the config change as many of the examples seem to use the :fast atom for the model key.

octowombat

octowombat OP

I’m afraid I can’t find where to put the altered config when in LiveBook. Obviously if I was just in my own Elixir project I know where to do it. So many of the LiveBook examples give the same instructions on setting the OPENAI_API_KEY and the model is configured to be :fast so I thought it must be my setup as was sure the jido.run website could not be so wrong.

octowombat

octowombat OP

After transferring to a simple skeleton Elixir project I got it to work after setting the config to be

config :jido_ai, :model_aliases, %{
  fast: "openai:gpt-4o-mini",
  reasoning: "openai:gpt-4o",
  planning: "openai:gpt-4o",
  capable: "openai:gpt-4o"
`}

The fix was it needed to be a map as the keyword list was swallowed as an empty map and therefore always fell back to the defaults.

mikehostetler

mikehostetler

Sorry for the friction - I’m working on making this experience better. I will patch the docs so this makes it back into the original LiveBook

octowombat

octowombat OP

Hey thanks! I was and still am excited to try out Jido after listening to you on various podcasts and been a long time Elixir fan/dev/architect (since 2015, and Erlang before that).

I was sure it was my stupidity but as I only used LiveBook a while back (and my intention is not LiveBook) I switched to a bare simple Elixir project to debug my mistake.

Great work and I’m glad you carried on with it after you did a retrospective look a while back.

Mike

mikehostetler

mikehostetler

It’s been a journey for sure! The project grew really fast and it’s been a challenge to keep on top of all the little points of friction.

As stated above, docs and livebooks aren’t always the highest on the list to proactively test and fix - but I’m making progress!!!

I have a lot of automations built to manage the ecosystem, dependencies and integrations across supported packages which has helped tremendously. The core is now in a great place and I’m now starting to look ahead towards what is next.

Thanks for digging in and let me know if there’s anything else you run into so I can patch it.

octowombat

octowombat OP

Appreciate the offer - thanks, I will certainly bear it in mind. I also will see if there is anything I can do to give back too.

— All posts loaded —

Where Next? Top

Trending in Troubleshooting Top

edvardo1
Hello, I’ve found an interesting non-backwards-compatible change in Elixir 1.20. For context: There exists a project called PolyHok, whi...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge &amp; Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews