ruby_llm
One delightful Ruby framework for every major AI provider. Build AI agents, chatbots, RAG apps, and multimodal workflows in beautiful, expressive code.
File Explorer
- SKILL.md
- bug_report.yml
- config.yml
- feature_request.yml
- _gitleaks.yml
- _lint.yml
- _test-matrix.yml
- docs.yml
- main.yml
- pr.yml
- release.yml
- FUNDING.yml
- pull_request_template.md
- console
- gitleaks-staged
- rspec-queue
- setup
- test
- agentic-workflows.md
- agents.md
- async.md
- batches.md
- durable-agents.md
- error-handling.md
- instrumentation.md
- memory.md
- rag.md
- rails-advanced-config.md
- rails-generators.md
- rails-persistence.md
- rails-streaming.md
- rails.md
- attachments.md
- audio-transcription.md
- chat-callbacks.md
- chat-request-control.md
- chat.md
- citations.md
- cost-and-usage-tracking.md
- embeddings.md
- files.md
- image-generation.md
- moderation.md
- ocr.md
- prompt-caching.md
- prompt-rendering.md
- rerank.md
- server-tools.md
- streaming.md
- structured-output.md
- text-to-speech.md
- thinking.md
- tool-execution.md
- tool-parameters.md
- tools.md
- video-generation.md
- company_logos.yml
- company_logos_featured.yml
- navigation.yml
- sidebar.yml
- social_links.yml
- versions.yml
- configuration-connection.md
- configuration-providers.md
- configuration.md
- getting-started.md
- overview.md
- head_end.html
- home.html
- version_select.html
- rouge_rubyllm_themes.rb
- sass_deprecation_options.rb
- api-reference.md
- available-models.md
- custom-endpoints.md
- custom-providers.md
- ecosystem.md
- model-resolution.md
- models.md
- upgrading.md
- rubyllm-overrides.css
- logotype.svg
- 186803.png
- 37signals.svg
- 81559596.png
- akira.svg
- bca-ltd.svg
- build-canada-formerly-yuma-ai.png
- bunny-inc.png
- chat-with-work.svg
- chatwoot-mark.svg
- chatwoot-text.svg
- chatwoot.svg
- cora.png
- corepilot.svg
- craft-logo.svg
- craft-tattoo.svg
- crevio-inc.png
- dscribe-ai.png
- ermeutika-srl.png
- granthero-mark.png
- granthero-text.png
- granthero.png
- hunter.svg
- IMG_8821.png
- inloop-studio.png
- intuition-education.svg
- lars-logo.svg
- litechat-ai.png
- logo-0aae0a7a28b600911462d54fbf14c137618e439f36a983f2f1e8d0ad9ad3a793.png
- logo-black.png
- logo-black.svg
- madbomber-software.svg
- madbomber_logo.svg
- MBU_Logo.svg
- meet-lars.svg
- meinbildungsurlaub.svg
- missive.svg
- nodal-networks.png
- openregulatory-color.png
- openregulatory-text.png
- openregulatory.png
- primevise.svg
- reelmoney.png
- serpapi.svg
- shopify-mark.svg
- shopify-text.svg
- shopify.svg
- startup-jobs.svg
- sxn-labs.svg
- sxnlabs-logo.svg
- team-vmist.png
- voicelog-ai.png
- yato.png
- zipchat.png
- chatwithwork-logotype-dark.svg
- chatwithwork-logotype.svg
- anthropic-text.svg
- azureai-color.svg
- azureai-text.svg
- bedrock-color.svg
- bedrock-text.svg
- deepseek-color.svg
- deepseek-text.svg
- gemini-color.svg
- gemini-text.svg
- gpustack-logo.png
- mistral-color.svg
- mistral-text.svg
- ollama-text.svg
- ollama.svg
- openai-text.svg
- openai.svg
- openrouter-text.svg
- openrouter.svg
- perplexity-color.svg
- perplexity-text.svg
- vertexai-color.svg
- vertexai-text.svg
- xai-text.svg
- xai.svg
- apple-touch-icon.png
- favicon-96x96.png
- favicon.ico
- site.webmanifest
- web-app-manifest-192x192.png
- web-app-manifest-512x512.png
- javascript.svg
- python.svg
- ruby.svg
- carmine-signature.png
- carmine.jpg
- book.svg
- file-code.svg
- rails.svg
- rocket.svg
- ruby-diamond.svg
- workflow.svg
- aaron-snyder.webp
- abhishek-parolkar.webp
- ale-solano.webp
- amanda-kinney-santibanez.webp
- angel-mendez.webp
- axel-grubba.webp
- brendan-samek.webp
- chris-hasinski.webp
- chris-sonnier.webp
- cole-robertson.webp
- daniel-friis.webp
- dewayne-vanhoozer.webp
- elvinas-predkelis.webp
- eric-pugh.webp
- eric-wright.webp
- giovapanasiti.webp
- hadrien-blanc.webp
- hamid-siddiqui.webp
- joe-leo.webp
- john-desilva.webp
- jonathan-satovsky.webp
- jorge-manrubia.webp
- kieran-klaassen.webp
- lightning-rails.webp
- luis-ezcurdia.webp
- marc-kohlbrugge.webp
- matthew-carriere.webp
- mauro-eldritch.webp
- nick-warwick.webp
- nina-revko.webp
- ola-bini.webp
- philippe-lehoux.webp
- rich-chetwynd.webp
- ruslan-leteyski.webp
- ryan-odonnell.webp
- sawan-shah.webp
- shivam-mishra.webp
- avatar-1.png
- avatar-10.png
- avatar-2.png
- avatar-3.png
- avatar-4.png
- avatar-5.png
- avatar-6.png
- avatar-7.png
- avatar-8.png
- avatar-9.png
- demo-poster-figma.png
- demo-poster.jpg
- anthropic-text.svg
- azureai-color.svg
- azureai-text.svg
- bedrock-color.svg
- bedrock-text.svg
- cohere-color.svg
- cohere-text.svg
- deepgram-text.svg
- deepseek-color.svg
- deepseek-text.svg
- elevenlabs-text.svg
- gemini-color.svg
- gemini-text.svg
- gpustack-logo.png
- mistral-color.svg
- mistral-text.svg
- ollama-text.svg
- ollama.svg
- openai-text.svg
- openai.svg
- openrouter-text.svg
- openrouter.svg
- perplexity-color.svg
- perplexity-text.svg
- vertexai-color.svg
- vertexai-text.svg
- xai-text.svg
- xai.svg
- logo.svg
- logotype.jpg
- logotype.png
- logotype.svg
- logotype_centered.svg
- logotype_centered_dark.svg
- logotype_dark.jpg
- logotype_dark.png
- logotype_dark.svg
- homepage.js
- build-api.sh
- build-versions.sh
- export-api-markdown.rb
- postprocess_api_seo.rb
- prepare_one_x_docs.rb
- serve.sh
- .gitignore
- _config.yml
- about.md
- Gemfile
- index.md
- ruby_llm
- config
- rails_7.1.gemfile
- rails_7.2.gemfile
- rails_8.0.gemfile
- rails_8.1.gemfile
- agent.rb.tt
- instructions.txt.erb.tt
- agent_generator.rb
- chats_controller.rb.tt
- messages_controller.rb.tt
- models_controller.rb.tt
- messages_helper.rb.tt
- chat_response_job.rb.tt
- _chat.html.erb.tt
- _form.html.erb.tt
- index.html.erb.tt
- new.html.erb.tt
- show.html.erb.tt
- _default.html.erb.tt
- _default.html.erb.tt
- _assistant.html.erb.tt
- _content.html.erb.tt
- _error.html.erb.tt
- _form.html.erb.tt
- _system.html.erb.tt
- _tool.html.erb.tt
- _tool_calls.html.erb.tt
- _user.html.erb.tt
- _model.html.erb.tt
- index.html.erb.tt
- show.html.erb.tt
- _chat.html.erb.tt
- _form.html.erb.tt
- index.html.erb.tt
- new.html.erb.tt
- show.html.erb.tt
- _default.html.erb.tt
- _default.html.erb.tt
- _assistant.html.erb.tt
- _content.html.erb.tt
- _error.html.erb.tt
- _form.html.erb.tt
- _system.html.erb.tt
- _tool.html.erb.tt
- _tool_calls.html.erb.tt
- _user.html.erb.tt
- create.turbo_stream.erb.tt
- _model.html.erb.tt
- index.html.erb.tt
- show.html.erb.tt
- chat_ui_generator.rb
- chat_model.rb.tt
- create_chats_migration.rb.tt
- create_messages_migration.rb.tt
- create_ruby_llm_records_migration.rb.tt
- initializer.rb.tt
- message_model.rb.tt
- install_generator.rb
- provider.rb.erb
- provider_spec.rb.erb
- console.erb
- setup.erb
- appraisals.erb
- archspec.rb.erb
- chat_spec.rb.erb
- chat_streaming_spec.rb.erb
- ci.yml.erb
- entrypoint.rb.erb
- env.example.erb
- fixtures_gitkeep.erb
- flayignore.erb
- gemfile.erb
- gemspec.erb
- gitignore.erb
- gitleaks.yml.erb
- license.erb
- models_spec.rb.erb
- overcommit.yml.erb
- provider.rb.erb
- provider_spec.rb.erb
- rakefile.erb
- readme.md.erb
- release.yml.erb
- rspec.erb
- rubocop.yml.erb
- rubyllm_configuration.rb.erb
- spec_helper.rb.erb
- streaming_error_helpers.rb.erb
- vcr_configuration.rb.erb
- version.rb.erb
- capabilities.rb.erb
- capabilities_spec.rb.erb
- schema.rb.tt
- schema_generator.rb
- tool_call.html.erb.tt
- tool_result.html.erb.tt
- tool.rb.tt
- tool_call.html.erb.tt
- tool_result.html.erb.tt
- tool_generator.rb
- add_v2_0_message_columns.rb.tt
- upgrade_generator.rb
- generator_helpers.rb
- acts_as.rb
- attachment_helpers.rb
- batch.rb
- chat_methods.rb
- message_methods.rb
- model.rb
- payload_helpers.rb
- tool_call.rb
- usage.rb
- modalities.rb
- pricing.rb
- pricing_category.rb
- pricing_tier.rb
- batches.rb
- chat.rb
- embeddings.rb
- files.rb
- media.rb
- models.rb
- streaming.rb
- tools.rb
- batches.rb
- chat.rb
- embedding_batches.rb
- embeddings.rb
- images.rb
- media.rb
- models.rb
- moderation.rb
- rerank.rb
- speech.rb
- streaming.rb
- temperature.rb
- tools.rb
- transcription.rb
- chat.rb
- embeddings.rb
- media.rb
- models.rb
- rerank.rb
- streaming.rb
- tools.rb
- transcription.rb
- batches.rb
- chat.rb
- media.rb
- streaming.rb
- models.rb
- speech.rb
- transcription.rb
- models.rb
- speech.rb
- transcription.rb
- batches.rb
- caches.rb
- chat.rb
- embeddings.rb
- files.rb
- images.rb
- media.rb
- models.rb
- speech.rb
- streaming.rb
- tools.rb
- transcription.rb
- videos.rb
- cohere_embeddings.rb
- nova_embeddings.rb
- titan_multimodal_embeddings.rb
- titan_text_embeddings.rb
- batches.rb
- files.rb
- batches.rb
- chat.rb
- media.rb
- streaming.rb
- tools.rb
- anthropic.rb
- chat_completions.rb
- cohere.rb
- converse.rb
- deepgram.rb
- elevenlabs.rb
- gemini.rb
- invoke_model.rb
- responses.rb
- capabilities.rb
- batches.rb
- chat.rb
- chat_completions.rb
- embeddings.rb
- files.rb
- media.rb
- models.rb
- responses.rb
- videos.rb
- anthropic.rb
- chat_completions.rb
- responses.rb
- auth.rb
- files.rb
- mantle.rb
- models.rb
- capabilities.rb
- capabilities.rb
- capabilities.rb
- chat.rb
- responses.rb
- capabilities.rb
- capabilities.rb
- chat.rb
- media.rb
- models.rb
- batches.rb
- capabilities.rb
- chat.rb
- chat_completions.rb
- embeddings.rb
- files.rb
- media.rb
- models.rb
- ocr.rb
- speech.rb
- transcription.rb
- chat.rb
- media.rb
- models.rb
- models.rb
- capabilities.rb
- chat.rb
- files.rb
- images.rb
- media.rb
- models.rb
- speech.rb
- streaming.rb
- videos.rb
- capabilities.rb
- chat.rb
- embeddings.rb
- media.rb
- models.rb
- batches.rb
- batches.rb
- batches.rb
- anthropic.rb
- batch_prediction.rb
- chat_completions.rb
- embeddings.rb
- files.rb
- gemini.rb
- mistral.rb
- models.rb
- batches.rb
- chat.rb
- chat_completions.rb
- files.rb
- images.rb
- models.rb
- responses.rb
- speech.rb
- transcription.rb
- videos.rb
- anthropic.rb
- azure.rb
- bedrock.rb
- capability_table.rb
- cohere.rb
- deepgram.rb
- deepseek.rb
- elevenlabs.rb
- gemini.rb
- gpustack.rb
- mistral.rb
- ollama.rb
- ollama_cloud.rb
- openai.rb
- openrouter.rb
- perplexity.rb
- vertexai.rb
- xai.rb
- agent.rb
- aliases.json
- aliases.rb
- attachment.rb
- batch.rb
- cached_content.rb
- chat.rb
- chunk.rb
- citation.rb
- configuration.rb
- connection.rb
- context.rb
- cost.rb
- deprecator.rb
- embedding.rb
- embedding_request.rb
- error.rb
- error_middleware.rb
- fallback.rb
- image.rb
- inspectable.rb
- instrumentation.rb
- message.rb
- mime_type.rb
- model.rb
- model_registry.rb
- model_schema.rb
- models.json
- models.rb
- moderation.rb
- ocr.rb
- prompt.rb
- protocol.rb
- provider.rb
- provider_generator_cli.rb
- provider_scaffold.rb
- railtie.rb
- rerank.rb
- search_results.rb
- server_tool_call.rb
- server_tools.rb
- speech.rb
- stream_accumulator.rb
- streaming.rb
- thinking.rb
- tokens.rb
- tool.rb
- tool_call.rb
- tool_concurrency.rb
- transcription.rb
- transcription_chunk.rb
- uploaded_file.rb
- usage.rb
- usage_middleware.rb
- utils.rb
- version.rb
- video.rb
- video_job.rb
- workflow.rb
- ruby_llm.rake
- ruby_llm.rb
- generate-provider
- .keep
- application_controller.rb
- .keep
- application_record.rb
- chat.rb
- message.rb
- development.rb
- production.rb
- test.rb
- cors.rb
- filter_parameter_logging.rb
- inflections.rb
- en.yml
- application.rb
- boot.rb
- credentials.yml.enc
- database.yml
- environment.rb
- puma.rb
- routes.rb
- storage.yml
- 20250602133502_create_tables.rb
- 20250602134116_create_active_storage_tables.active_storage.rb
- 20251021170000_add_v1_9_columns.rb
- 20260506120000_create_action_text_tables.action_text.rb
- 20260610120000_add_v1_17_columns.rb
- 20260704120000_rename_cache_token_columns.rb
- 20260704130000_add_message_cost_columns.rb
- 20260808120000_add_tool_call_approval.rb
- 20260811120000_add_server_tool_columns.rb
- 20260818120000_add_raw_reasoning.rb
- schema.rb
- seeds.rb
- .keep
- .keep
- robots.txt
- .keep
- .keep
- .keep
- .keep
- .keep
- .keep
- .gitignore
- config.ru
- Gemfile
- Rakefile
- README.md
- default_models_auto_tailwind_ui_template.rb
- default_models_tailwind_ui_template.rb
- default_models_template.rb
- namespaced_models_template.rb
- upgrade_generators_custom_mappings_template.rb
- upgrade_generators_default_template.rb
- activerecord_actsas_attachment_handling_handles_attachments_in_ask_method.yml
- activerecord_actsas_attachment_handling_handles_multiple_attachments.yml
- activerecord_actsas_basic_chat_functionality_persists_chat_history.yml
- agent_can_ask_using_the_first_configured_chat_model.yml
- batch_with_anthropic_claude-haiku-4-5_answers_staged_chats_and_appends_the_answers_to_their_conversations.yml
- batch_with_anthropic_claude-haiku-4-5_cancels_a_running_batch.yml
- batch_with_anthropic_claude-haiku-4-5_reloads_a_batch_by_id_and_collects_messages_without_the_chats.yml
- batch_with_gemini_gemini-2_5-flash_answers_staged_chats_and_appends_the_answers_to_their_conversations.yml
- batch_with_mistral_mistral-small-latest_answers_staged_chats_and_appends_the_answers_to_their_conversations.yml
- batch_with_openai_gpt-5-nano_answers_staged_chats_and_appends_the_answers_to_their_conversations.yml
- batch_with_openai_text-embedding-3-small_embeddings_embeds_staged_texts_and_hydrates_each_request_result.yml
- batch_with_xai_grok-4-1-fast-non-reasoning_answers_staged_chats_and_appends_the_answers_to_their_conversations.yml
- cachedcontent_explicit_caching_round-trip_finds_an_existing_cache_by_name.yml
- cachedcontent_explicit_caching_round-trip_gemini_gemini-2_5-flash_creates_uses_extends_and_deletes_a_cache.yml
- cachedcontent_explicit_caching_round-trip_vertexai_gemini-2_5-flash_creates_uses_and_deletes_a_cache.yml
- chat_anthropic_claude-sonnet-4-6_compacts_a_long_conversation_and_bills_the_summarization_pass.yml
- chat_assume_model_exists_works_with_models_not_in_registry_but_available_in_api.yml
- chat_audio_models_bedrock_mistral_voxtral-mini-3b-2507_can_understand_audio.yml
- chat_audio_models_bedrock_mistral_voxtral-mini-3b-2507_can_understand_mp3_audio.yml
- chat_audio_models_gemini_gemini-2_5-flash_can_understand_audio.yml
- chat_audio_models_gemini_gemini-2_5-flash_can_understand_mp3_audio.yml
- chat_audio_models_mistral_voxtral-small-latest_can_understand_audio.yml
- chat_audio_models_mistral_voxtral-small-latest_can_understand_mp3_audio.yml
- chat_audio_models_openai_gpt-audio-mini_can_understand_audio.yml
- chat_audio_models_openai_gpt-audio-mini_can_understand_mp3_audio.yml
- chat_basic_chat_functionality_anthropic_claude-haiku-4-5_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_anthropic_claude-haiku-4-5_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_anthropic_claude-haiku-4-5_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_anthropic_claude-haiku-4-5_returns_raw_responses.yml
- chat_basic_chat_functionality_anthropic_claude-haiku-4-5_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_azure_grok-4-1-fast-non-reasoning_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_azure_grok-4-1-fast-non-reasoning_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_azure_grok-4-1-fast-non-reasoning_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_azure_grok-4-1-fast-non-reasoning_returns_raw_responses.yml
- chat_basic_chat_functionality_azure_grok-4-1-fast-non-reasoning_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_bedrock_amazon_nova-2-lite-v1_0_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_bedrock_amazon_nova-2-lite-v1_0_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_bedrock_amazon_nova-2-lite-v1_0_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_bedrock_amazon_nova-2-lite-v1_0_returns_raw_responses.yml
- chat_basic_chat_functionality_bedrock_amazon_nova-2-lite-v1_0_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_cohere_command-a-03-2025_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_cohere_command-a-03-2025_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_cohere_command-a-03-2025_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_cohere_command-a-03-2025_returns_raw_responses.yml
- chat_basic_chat_functionality_cohere_command-a-03-2025_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_deepseek_deepseek-chat_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_deepseek_deepseek-chat_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_deepseek_deepseek-chat_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_deepseek_deepseek-chat_returns_raw_responses.yml
- chat_basic_chat_functionality_deepseek_deepseek-chat_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_gemini_gemini-2_5-flash_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_gemini_gemini-2_5-flash_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_gemini_gemini-2_5-flash_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_gemini_gemini-2_5-flash_returns_raw_responses.yml
- chat_basic_chat_functionality_gemini_gemini-2_5-flash_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_gpustack_qwen3_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_gpustack_qwen3_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_gpustack_qwen3_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_gpustack_qwen3_returns_raw_responses.yml
- chat_basic_chat_functionality_gpustack_qwen3_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_mistral_mistral-small-latest_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_mistral_mistral-small-latest_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_mistral_mistral-small-latest_returns_raw_responses.yml
- chat_basic_chat_functionality_mistral_mistral-small-latest_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_ollama_cloud_gpt-oss_120b_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_ollama_cloud_gpt-oss_120b_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_ollama_cloud_gpt-oss_120b_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_ollama_cloud_gpt-oss_120b_returns_raw_responses.yml
- chat_basic_chat_functionality_ollama_cloud_gpt-oss_120b_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_ollama_qwen3_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_ollama_qwen3_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_ollama_qwen3_returns_raw_responses.yml
- chat_basic_chat_functionality_ollama_qwen3_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_openai_gpt-5-nano_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_openai_gpt-5-nano_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_openai_gpt-5-nano_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_openai_gpt-5-nano_returns_raw_responses.yml
- chat_basic_chat_functionality_openai_gpt-5-nano_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_openrouter_claude-haiku-4-5_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_openrouter_claude-haiku-4-5_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_openrouter_claude-haiku-4-5_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_openrouter_claude-haiku-4-5_returns_raw_responses.yml
- chat_basic_chat_functionality_openrouter_claude-haiku-4-5_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_perplexity_sonar_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_perplexity_sonar_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_perplexity_sonar_returns_raw_responses.yml
- chat_basic_chat_functionality_perplexity_sonar_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_vertexai_gemini-2_5-flash_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_vertexai_gemini-2_5-flash_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_vertexai_gemini-2_5-flash_replaces_previous_system_messages_by_default.yml
- chat_basic_chat_functionality_vertexai_gemini-2_5-flash_returns_raw_responses.yml
- chat_basic_chat_functionality_vertexai_gemini-2_5-flash_successfully_uses_the_system_prompt.yml
- chat_basic_chat_functionality_xai_grok-4-1-fast-non-reasoning_can_handle_multi-turn_conversations.yml
- chat_basic_chat_functionality_xai_grok-4-1-fast-non-reasoning_can_have_a_basic_conversation.yml
- chat_basic_chat_functionality_xai_grok-4-1-fast-non-reasoning_returns_raw_responses.yml
- chat_basic_chat_functionality_xai_grok-4-1-fast-non-reasoning_successfully_uses_the_system_prompt.yml
- chat_bedrock_nova_2_reasoning_returns_reasoning_content_blocks.yml
- chat_change_model_on_the_fly_between_anthropic_claude-haiku-4-5_and_azure_grok-4-1-fast-non-reasoning.yml
- chat_change_model_on_the_fly_between_anthropic_claude-haiku-4-5_and_bedrock_amazon_nova-2-lite-v1_0.yml
- chat_citations_with_a_model_that_does_not_support_citations_warns_when_citations_are_requested.yml
- chat_citations_with_anthropic_claude-haiku-4-5_cites_pdf_documents_with_page_numbers.yml
- chat_citations_with_anthropic_claude-haiku-4-5_cites_text_documents_in_responses.yml
- chat_citations_with_anthropic_claude-haiku-4-5_cites_tool_results_returned_as_search_results.yml
- chat_citations_with_anthropic_claude-haiku-4-5_streams_citations.yml
- chat_citations_with_bedrock_claude-haiku-4-5_cites_pdf_documents_with_page_numbers.yml
- chat_citations_with_bedrock_claude-haiku-4-5_cites_text_documents_in_responses.yml
- chat_citations_with_bedrock_claude-haiku-4-5_cites_tool_results_returned_as_search_results.yml
- chat_citations_with_bedrock_claude-haiku-4-5_streams_citations.yml
- chat_citations_with_cohere_command-a-plus-05-2026_cites_text_documents_in_responses.yml
- chat_citations_with_cohere_command-a-plus-05-2026_cites_tool_results_returned_as_search_results.yml
- chat_citations_with_cohere_command-a-plus-05-2026_streams_citations.yml
- chat_citations_with_gemini_gemini-2_5-flash_returns_grounding_citations_when_search_is_enabled.yml
- chat_citations_with_openai_gpt-4o-mini-search-preview_returns_url_citations_when_web_search_is_enabled.yml
- chat_citations_with_openrouter_perplexity_sonar_returns_search_result_citations.yml
- chat_citations_with_perplexity_sonar_returns_search_result_citations.yml
- chat_citations_with_perplexity_sonar_returns_search_result_citations_when_streaming.yml
- chat_citations_with_vertexai_gemini-2_5-flash_returns_grounding_citations_when_search_is_enabled.yml
- chat_code_execution_with_anthropic_claude-haiku-4-5_runs_code_server-side_and_returns_the_result_blocks.yml
- chat_code_execution_with_gemini_gemini-3_5-flash_runs_code_server-side_and_replays_the_turn.yml
- chat_count_tokens_with_anthropic_claude-haiku-4-5_counts_a_staged_message_without_mutating_the_chat.yml
- chat_count_tokens_with_anthropic_claude-haiku-4-5_counts_requests_with_thinking_enabled.yml
- chat_count_tokens_with_anthropic_claude-haiku-4-5_counts_the_next_request_as_configured.yml
- chat_count_tokens_with_gemini_gemini-3_5-flash_counts_a_staged_message_without_mutating_the_chat.yml
- chat_count_tokens_with_gemini_gemini-3_5-flash_counts_the_next_request_as_configured.yml
- chat_count_tokens_with_vertexai_gemini-2_5-flash_counts_a_staged_message.yml
- chat_deepseek_thinking_control_disables_thinking_for_effort_none.yml
- chat_deepseek_thinking_control_returns_reasoning_content_for_effort_high.yml
- chat_document_models_bedrock_claude-sonnet-4-5_understands_docx_documents.yml
- chat_document_models_mistral_mistral-small-latest_understands_docx_documents.yml
- chat_document_models_openai_gpt-5-nano_understands_docx_documents.yml
- chat_document_models_perplexity_sonar-pro_understands_docx_documents.yml
- chat_error_handling_raises_an_error_when_tool_execution_fails.yml
- chat_error_handling_with_anthropic_claude-haiku-4-5_raises_appropriate_auth_error.yml
- chat_error_handling_with_azure_grok-4-1-fast-non-reasoning_raises_appropriate_auth_error.yml
- chat_error_handling_with_bedrock_amazon_nova-2-lite-v1_0_raises_appropriate_auth_error.yml
- chat_error_handling_with_cohere_command-a-03-2025_raises_appropriate_auth_error.yml
- chat_error_handling_with_deepseek_deepseek-chat_raises_appropriate_auth_error.yml
- chat_error_handling_with_gemini_gemini-2_5-flash_raises_appropriate_auth_error.yml
- chat_error_handling_with_mistral_mistral-small-latest_raises_appropriate_auth_error.yml
- chat_error_handling_with_ollama_cloud_gpt-oss_120b_raises_appropriate_auth_error.yml
- chat_error_handling_with_openai_gpt-5-nano_raises_appropriate_auth_error.yml
- chat_error_handling_with_openrouter_claude-haiku-4-5_raises_appropriate_auth_error.yml
- chat_error_handling_with_perplexity_sonar_raises_appropriate_auth_error.yml
- chat_error_handling_with_vertexai_gemini-2_5-flash_faraday_version_1_vertexai_gemini-2_5-flash_supports_handling_streaming_error_chunks.yml
- chat_error_handling_with_vertexai_gemini-2_5-flash_faraday_version_1_vertexai_gemini-2_5-flash_supports_handling_streaming_error_events.yml
- chat_error_handling_with_vertexai_gemini-2_5-flash_faraday_version_2_vertexai_gemini-2_5-flash_supports_handling_streaming_error_chunks.yml
- chat_error_handling_with_vertexai_gemini-2_5-flash_faraday_version_2_vertexai_gemini-2_5-flash_supports_handling_streaming_error_events.yml
- chat_error_handling_with_xai_grok-4-1-fast-non-reasoning_raises_appropriate_auth_error.yml
- chat_function_calling_anthropic_claude-haiku-4-5_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_anthropic_claude-haiku-4-5_can_use_parallel_tool_calls.yml
- chat_function_calling_anthropic_claude-haiku-4-5_can_use_tools.yml
- chat_function_calling_anthropic_claude-haiku-4-5_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_anthropic_claude-haiku-4-5_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_anthropic_claude-haiku-4-5_can_use_tools_without_parameters.yml
- chat_function_calling_anthropic_claude-haiku-4-5_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_anthropic_claude-haiku-4-5_handles_anyof_params.yml
- chat_function_calling_anthropic_claude-haiku-4-5_handles_array_params.yml
- chat_function_calling_anthropic_claude-haiku-4-5_handles_object_params.yml
- chat_function_calling_azure_grok-4-1-fast-non-reasoning_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_azure_grok-4-1-fast-non-reasoning_can_use_parallel_tool_calls.yml
- chat_function_calling_azure_grok-4-1-fast-non-reasoning_can_use_tools.yml
- chat_function_calling_azure_grok-4-1-fast-non-reasoning_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_azure_grok-4-1-fast-non-reasoning_can_use_tools_without_parameters.yml
- chat_function_calling_azure_grok-4-1-fast-non-reasoning_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_azure_grok-4-1-fast-non-reasoning_handles_anyof_params.yml
- chat_function_calling_azure_grok-4-1-fast-non-reasoning_handles_array_params.yml
- chat_function_calling_azure_grok-4-1-fast-non-reasoning_handles_object_params.yml
- chat_function_calling_bedrock_amazon_nova-2-lite-v1_0_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_bedrock_amazon_nova-2-lite-v1_0_can_use_tools.yml
- chat_function_calling_bedrock_amazon_nova-2-lite-v1_0_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_bedrock_amazon_nova-2-lite-v1_0_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_bedrock_amazon_nova-2-lite-v1_0_can_use_tools_without_parameters.yml
- chat_function_calling_bedrock_amazon_nova-2-lite-v1_0_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_bedrock_amazon_nova-2-lite-v1_0_handles_anyof_params.yml
- chat_function_calling_bedrock_amazon_nova-2-lite-v1_0_handles_array_params.yml
- chat_function_calling_bedrock_amazon_nova-2-lite-v1_0_handles_object_params.yml
- chat_function_calling_bedrock_claude-sonnet-4-5_can_use_parallel_tool_calls.yml
- chat_function_calling_cohere_command-a-03-2025_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_cohere_command-a-03-2025_can_use_parallel_tool_calls.yml
- chat_function_calling_cohere_command-a-03-2025_can_use_tools.yml
- chat_function_calling_cohere_command-a-03-2025_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_cohere_command-a-03-2025_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_cohere_command-a-03-2025_can_use_tools_without_parameters.yml
- chat_function_calling_cohere_command-a-03-2025_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_cohere_command-a-03-2025_handles_anyof_params.yml
- chat_function_calling_cohere_command-a-03-2025_handles_array_params.yml
- chat_function_calling_cohere_command-a-03-2025_handles_object_params.yml
- chat_function_calling_deepseek_deepseek-chat_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_deepseek_deepseek-chat_can_use_parallel_tool_calls.yml
- chat_function_calling_deepseek_deepseek-chat_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_deepseek_deepseek-chat_can_use_tools_without_parameters.yml
- chat_function_calling_deepseek_deepseek-chat_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_deepseek_deepseek-chat_handles_anyof_params.yml
- chat_function_calling_deepseek_deepseek-chat_handles_array_params.yml
- chat_function_calling_deepseek_deepseek-chat_handles_object_params.yml
- chat_function_calling_gemini_gemini-2_5-flash_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_gemini_gemini-2_5-flash_can_use_parallel_tool_calls.yml
- chat_function_calling_gemini_gemini-2_5-flash_can_use_tools.yml
- chat_function_calling_gemini_gemini-2_5-flash_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_gemini_gemini-2_5-flash_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_gemini_gemini-2_5-flash_can_use_tools_without_parameters.yml
- chat_function_calling_gemini_gemini-2_5-flash_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_gemini_gemini-2_5-flash_handles_anyof_params.yml
- chat_function_calling_gemini_gemini-2_5-flash_handles_array_params.yml
- chat_function_calling_gemini_gemini-2_5-flash_handles_object_params.yml
- chat_function_calling_gpustack_qwen3_can_use_tools.yml
- chat_function_calling_gpustack_qwen3_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_gpustack_qwen3_can_use_tools_without_parameters.yml
- chat_function_calling_gpustack_qwen3_handles_anyof_params.yml
- chat_function_calling_gpustack_qwen3_handles_array_params.yml
- chat_function_calling_gpustack_qwen3_handles_object_params.yml
- chat_function_calling_mistral_mistral-small-latest_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_mistral_mistral-small-latest_can_use_parallel_tool_calls.yml
- chat_function_calling_mistral_mistral-small-latest_can_use_tools.yml
- chat_function_calling_mistral_mistral-small-latest_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_mistral_mistral-small-latest_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_mistral_mistral-small-latest_can_use_tools_without_parameters.yml
- chat_function_calling_mistral_mistral-small-latest_handles_anyof_params.yml
- chat_function_calling_mistral_mistral-small-latest_handles_array_params.yml
- chat_function_calling_mistral_mistral-small-latest_handles_object_params.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_can_use_parallel_tool_calls.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_can_use_tools.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_can_use_tools_without_parameters.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_handles_anyof_params.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_handles_array_params.yml
- chat_function_calling_ollama_cloud_gpt-oss_120b_handles_object_params.yml
- chat_function_calling_ollama_qwen3_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_ollama_qwen3_can_use_parallel_tool_calls.yml
- chat_function_calling_ollama_qwen3_can_use_tools.yml
- chat_function_calling_ollama_qwen3_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_ollama_qwen3_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_ollama_qwen3_can_use_tools_without_parameters.yml
- chat_function_calling_ollama_qwen3_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_ollama_qwen3_handles_anyof_params.yml
- chat_function_calling_ollama_qwen3_handles_array_params.yml
- chat_function_calling_ollama_qwen3_handles_object_params.yml
- chat_function_calling_openai_gpt-5-nano_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_openai_gpt-5-nano_can_use_parallel_tool_calls.yml
- chat_function_calling_openai_gpt-5-nano_can_use_tools.yml
- chat_function_calling_openai_gpt-5-nano_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_openai_gpt-5-nano_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_openai_gpt-5-nano_can_use_tools_without_parameters.yml
- chat_function_calling_openai_gpt-5-nano_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_openai_gpt-5-nano_handles_anyof_params.yml
- chat_function_calling_openai_gpt-5-nano_handles_array_params.yml
- chat_function_calling_openai_gpt-5-nano_handles_object_params.yml
- chat_function_calling_openrouter_claude-haiku-4-5_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_openrouter_claude-haiku-4-5_can_use_parallel_tool_calls.yml
- chat_function_calling_openrouter_claude-haiku-4-5_can_use_tools.yml
- chat_function_calling_openrouter_claude-haiku-4-5_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_openrouter_claude-haiku-4-5_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_openrouter_claude-haiku-4-5_can_use_tools_without_parameters.yml
- chat_function_calling_openrouter_claude-haiku-4-5_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_openrouter_claude-haiku-4-5_handles_anyof_params.yml
- chat_function_calling_openrouter_claude-haiku-4-5_handles_array_params.yml
- chat_function_calling_openrouter_claude-haiku-4-5_handles_object_params.yml
- chat_function_calling_thought_signatures_gemini_gemini-3_1-pro-preview_includes_thought_signatures_for_tool_calls.yml
- chat_function_calling_thought_signatures_vertexai_gemini-3_1-pro-preview_includes_thought_signatures_for_tool_calls.yml
- chat_function_calling_vertexai_gemini-2_5-flash_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_vertexai_gemini-2_5-flash_can_use_parallel_tool_calls.yml
- chat_function_calling_vertexai_gemini-2_5-flash_can_use_tools.yml
- chat_function_calling_vertexai_gemini-2_5-flash_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_vertexai_gemini-2_5-flash_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_vertexai_gemini-2_5-flash_can_use_tools_without_parameters.yml
- chat_function_calling_vertexai_gemini-2_5-flash_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_vertexai_gemini-2_5-flash_handles_anyof_params.yml
- chat_function_calling_vertexai_gemini-2_5-flash_handles_array_params.yml
- chat_function_calling_vertexai_gemini-2_5-flash_handles_object_params.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_can_handle_multiple_tool_calls_in_a_single_response.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_can_use_parallel_tool_calls.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_can_use_tools.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_can_use_tools_in_multi-turn_conversations.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_can_use_tools_with_multi-turn_streaming_conversations.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_can_use_tools_without_parameters.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_can_use_tools_without_parameters_in_multi-turn_streaming_conversations.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_handles_anyof_params.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_handles_array_params.yml
- chat_function_calling_xai_grok-4-1-fast-non-reasoning_handles_object_params.yml
- chat_gemini_token_accounting_correctly_sums_candidatestokencount_and_thoughtstokencount.yml
- chat_gemini_token_accounting_correctly_sums_candidatestokencount_and_thoughtstokencount_in_streaming.yml
- chat_mistral_hybrid_reasoning_replays_thinking_chunks_across_turns.yml
- chat_mistral_hybrid_reasoning_separates_thinking_from_final_content.yml
- chat_mistral_hybrid_reasoning_streams_thinking_separately_from_content.yml
- chat_multimodal_tool_attachments_anthropic_claude-haiku-4-5_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_anthropic_claude-haiku-4-5_reads_pdfs_returned_from_tools.yml
- chat_multimodal_tool_attachments_azure_grok-4-1-fast-non-reasoning_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_bedrock_claude-sonnet-4-5_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_bedrock_claude-sonnet-4-5_reads_pdfs_returned_from_tools.yml
- chat_multimodal_tool_attachments_gemini_gemini-2_5-flash_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_gemini_gemini-2_5-flash_reads_pdfs_returned_from_tools.yml
- chat_multimodal_tool_attachments_gemini_gemini-3-flash-preview_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_gemini_gemini-3-flash-preview_reads_pdfs_returned_from_tools.yml
- chat_multimodal_tool_attachments_mistral_mistral-small-latest_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_openai_gpt-5-nano_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_openai_gpt-5-nano_reads_pdfs_returned_from_tools.yml
- chat_multimodal_tool_attachments_openrouter_gemini-2_5-flash_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_openrouter_gemini-2_5-flash_reads_pdfs_returned_from_tools.yml
- chat_multimodal_tool_attachments_vertexai_gemini-2_5-flash_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_vertexai_gemini-2_5-flash_reads_pdfs_returned_from_tools.yml
- chat_multimodal_tool_attachments_vertexai_gemini-3-flash-preview_describes_images_returned_from_tools.yml
- chat_multimodal_tool_attachments_vertexai_gemini-3-flash-preview_reads_pdfs_returned_from_tools.yml
- chat_multimodal_tool_attachments_xai_grok-4-1-fast-non-reasoning_describes_images_returned_from_tools.yml
- chat_openrouter_reasoning_details_round-trip_accumulates_reasoning_details_while_streaming_tool_calls.yml
- chat_openrouter_reasoning_details_round-trip_replays_reasoning_details_across_tool_calls_and_turns.yml
- chat_pdf_models_anthropic_claude-haiku-4-5_can_handle_array_of_mixed_files_with_auto-detection.yml
- chat_pdf_models_anthropic_claude-haiku-4-5_handles_multiple_pdfs.yml
- chat_pdf_models_anthropic_claude-haiku-4-5_understands_pdfs.yml
- chat_pdf_models_bedrock_claude-sonnet-4-5_can_handle_array_of_mixed_files_with_auto-detection.yml
- chat_pdf_models_bedrock_claude-sonnet-4-5_handles_multiple_pdfs.yml
- chat_pdf_models_bedrock_claude-sonnet-4-5_understands_pdfs.yml
- chat_pdf_models_gemini_gemini-2_5-flash_can_handle_array_of_mixed_files_with_auto-detection.yml
- chat_pdf_models_gemini_gemini-2_5-flash_handles_multiple_pdfs.yml
- chat_pdf_models_gemini_gemini-2_5-flash_understands_pdfs.yml
- chat_pdf_models_openai_gpt-5-nano_can_handle_array_of_mixed_files_with_auto-detection.yml
- chat_pdf_models_openai_gpt-5-nano_handles_multiple_pdfs.yml
- chat_pdf_models_openai_gpt-5-nano_understands_pdfs.yml
- chat_pdf_models_openrouter_gemini-2_5-flash_can_handle_array_of_mixed_files_with_auto-detection.yml
- chat_pdf_models_openrouter_gemini-2_5-flash_handles_multiple_pdfs.yml
- chat_pdf_models_openrouter_gemini-2_5-flash_understands_pdfs.yml
- chat_pdf_models_vertexai_gemini-2_5-flash_can_handle_array_of_mixed_files_with_auto-detection.yml
- chat_pdf_models_vertexai_gemini-2_5-flash_handles_multiple_pdfs.yml
- chat_pdf_models_vertexai_gemini-2_5-flash_understands_pdfs.yml
- chat_prompt_cache_round-trip_anthropic_claude-haiku-4-5_writes_then_reads_the_prompt_cache.yml
- chat_prompt_cache_round-trip_bedrock_claude-haiku-4-5_writes_then_reads_the_prompt_cache.yml
- chat_prompt_cache_round-trip_openai_gpt-5_2_reuses_the_prompt_cache_with_a_shared_key.yml
- chat_real_error_scenarios_anthropic_claude-haiku-4-5_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_azure_grok-4-1-fast-non-reasoning_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_bedrock_amazon_nova-2-lite-v1_0_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_cohere_command-a-03-2025_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_deepseek_deepseek-chat_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_gemini_gemini-2_5-flash_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_ollama_cloud_gpt-oss_120b_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_openai_gpt-5-nano_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_openrouter_claude-haiku-4-5_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_perplexity_sonar_handles_context_length_exceeded_errors.yml
- chat_real_error_scenarios_vertexai_gemini-2_5-flash_handles_context_length_exceeded_errors.yml
- chat_responses_protocol_dialects_with_azure_gpt-5-nano_chats_on_the_openai_v1_responses_endpoint.yml
- chat_responses_protocol_dialects_with_azure_gpt-5-nano_round-trips_tool_calls.yml
- chat_responses_protocol_dialects_with_azure_gpt-5-nano_streams_responses.yml
- chat_responses_protocol_dialects_with_deepseek_deepseek-v4-flash_chats_with_reasoning_text_on_the_opt-in_responses_protocol.yml
- chat_responses_protocol_dialects_with_deepseek_deepseek-v4-flash_streams_reasoning_deltas.yml
- chat_responses_protocol_dialects_with_xai_grok-4_3_chats_on_the_responses_endpoint_by_default.yml
- chat_rubyllm_count_tokens_counts_one_user_message.yml
- chat_spreadsheet_models_bedrock_claude-sonnet-4-5_understands_xlsx_spreadsheets.yml
- chat_spreadsheet_models_openai_gpt-5-nano_understands_xlsx_spreadsheets.yml
- chat_streaming_responses_anthropic_claude-haiku-4-5_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_anthropic_claude-haiku-4-5_supports_streaming_responses.yml
- chat_streaming_responses_azure_grok-4-1-fast-non-reasoning_supports_streaming_responses.yml
- chat_streaming_responses_bedrock_amazon_nova-2-lite-v1_0_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_bedrock_amazon_nova-2-lite-v1_0_supports_streaming_responses.yml
- chat_streaming_responses_cohere_command-a-03-2025_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_cohere_command-a-03-2025_supports_streaming_responses.yml
- chat_streaming_responses_deepseek_deepseek-chat_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_deepseek_deepseek-chat_supports_streaming_responses.yml
- chat_streaming_responses_gemini_gemini-2_5-flash_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_gemini_gemini-2_5-flash_supports_streaming_responses.yml
- chat_streaming_responses_gpustack_qwen3_supports_streaming_responses.yml
- chat_streaming_responses_mistral_mistral-small-latest_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_mistral_mistral-small-latest_supports_streaming_responses.yml
- chat_streaming_responses_ollama_cloud_gpt-oss_120b_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_ollama_cloud_gpt-oss_120b_supports_streaming_responses.yml
- chat_streaming_responses_ollama_qwen3_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_ollama_qwen3_supports_streaming_responses.yml
- chat_streaming_responses_openai_gpt-5-nano_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_openai_gpt-5-nano_supports_streaming_responses.yml
- chat_streaming_responses_openrouter_claude-haiku-4-5_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_openrouter_claude-haiku-4-5_supports_streaming_responses.yml
- chat_streaming_responses_perplexity_sonar_supports_streaming_responses.yml
- chat_streaming_responses_vertexai_gemini-2_5-flash_reports_consistent_token_counts_compared_to_non-streaming.yml
- chat_streaming_responses_vertexai_gemini-2_5-flash_supports_streaming_responses.yml
- chat_streaming_responses_xai_grok-4-1-fast-non-reasoning_supports_streaming_responses.yml
- chat_string_tool_results_anthropic_claude-haiku-4-5_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_azure_grok-4-1-fast-non-reasoning_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_bedrock_amazon_nova-2-lite-v1_0_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_cohere_command-a-03-2025_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_deepseek_deepseek-chat_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_gemini_gemini-2_5-flash_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_mistral_mistral-small-latest_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_ollama_cloud_gpt-oss_120b_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_ollama_qwen3_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_openai_gpt-5-nano_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_openrouter_claude-haiku-4-5_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_vertexai_gemini-2_5-flash_preserves_strings_returned_from_tools.yml
- chat_string_tool_results_xai_grok-4-1-fast-non-reasoning_preserves_strings_returned_from_tools.yml
- chat_text_models_anthropic_claude-haiku-4-5_can_understand_remote_text.yml
- chat_text_models_anthropic_claude-haiku-4-5_can_understand_text.yml
- chat_text_models_azure_grok-4-1-fast-non-reasoning_can_understand_remote_text.yml
- chat_text_models_azure_grok-4-1-fast-non-reasoning_can_understand_text.yml
- chat_text_models_bedrock_amazon_nova-2-lite-v1_0_can_understand_remote_text.yml
- chat_text_models_bedrock_amazon_nova-2-lite-v1_0_can_understand_text.yml
- chat_text_models_cohere_command-a-03-2025_can_understand_remote_text.yml
- chat_text_models_cohere_command-a-03-2025_can_understand_text.yml
- chat_text_models_deepseek_deepseek-chat_can_understand_remote_text.yml
- chat_text_models_deepseek_deepseek-chat_can_understand_text.yml
- chat_text_models_gemini_gemini-2_5-flash_can_understand_remote_text.yml
- chat_text_models_gemini_gemini-2_5-flash_can_understand_text.yml
- chat_text_models_gpustack_qwen3_can_understand_remote_text.yml
- chat_text_models_gpustack_qwen3_can_understand_text.yml
- chat_text_models_mistral_mistral-small-latest_can_understand_remote_text.yml
- chat_text_models_mistral_mistral-small-latest_can_understand_text.yml
- chat_text_models_ollama_cloud_gpt-oss_120b_can_understand_remote_text.yml
- chat_text_models_ollama_cloud_gpt-oss_120b_can_understand_text.yml
- chat_text_models_ollama_qwen3_can_understand_remote_text.yml
- chat_text_models_ollama_qwen3_can_understand_text.yml
- chat_text_models_openai_gpt-5-nano_can_understand_remote_text.yml
- chat_text_models_openai_gpt-5-nano_can_understand_text.yml
- chat_text_models_openrouter_claude-haiku-4-5_can_understand_remote_text.yml
- chat_text_models_openrouter_claude-haiku-4-5_can_understand_text.yml
- chat_text_models_perplexity_sonar_can_understand_remote_text.yml
- chat_text_models_perplexity_sonar_can_understand_text.yml
- chat_text_models_vertexai_gemini-2_5-flash_can_understand_remote_text.yml
- chat_text_models_vertexai_gemini-2_5-flash_can_understand_text.yml
- chat_text_models_xai_grok-4-1-fast-non-reasoning_can_understand_remote_text.yml
- chat_text_models_xai_grok-4-1-fast-non-reasoning_can_understand_text.yml
- chat_thinking_display_with_anthropic_claude-sonnet-5_returns_readable_thinking_with_display_summarized.yml
- chat_tool_attachments_anthropic_claude-haiku-4-5_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_azure_grok-4-1-fast-non-reasoning_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_bedrock_amazon_nova-2-lite-v1_0_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_cohere_command-a-03-2025_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_gemini_gemini-2_5-flash_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_mistral_mistral-small-latest_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_ollama_cloud_gpt-oss_120b_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_openai_gpt-5-nano_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_openrouter_claude-haiku-4-5_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_vertexai_gemini-2_5-flash_returns_text_and_attachments_from_tools.yml
- chat_tool_attachments_xai_grok-4-1-fast-non-reasoning_returns_text_and_attachments_from_tools.yml
- chat_tool_call_callbacks_calls_after_tool_result_callback_when_tools_return_results.yml
- chat_tool_call_callbacks_calls_before_tool_call_callback_when_tools_are_used.yml
- chat_tool_call_callbacks_calls_both_before_tool_call_and_after_tool_result_callbacks_in_order.yml
- chat_tool_choice_and_calls_control_anthropic_claude-haiku-4-5_respects_calls_one_for_sequential_execution.yml
- chat_tool_choice_and_calls_control_anthropic_claude-haiku-4-5_respects_choice_none.yml
- chat_tool_choice_and_calls_control_anthropic_claude-haiku-4-5_respects_choice_required_for_unrelated_queries.yml
- chat_tool_choice_and_calls_control_anthropic_claude-haiku-4-5_respects_specific_tool_choice.yml
- chat_tool_choice_and_calls_control_cohere_command-a-03-2025_respects_choice_none.yml
- chat_tool_choice_and_calls_control_cohere_command-a-03-2025_respects_choice_required_for_unrelated_queries.yml
- chat_tool_choice_and_calls_control_deepseek_deepseek-chat_respects_choice_none.yml
- chat_tool_choice_and_calls_control_deepseek_deepseek-chat_respects_choice_required_for_unrelated_queries.yml
- chat_tool_choice_and_calls_control_deepseek_deepseek-chat_respects_specific_tool_choice.yml
- chat_tool_choice_and_calls_control_gemini_gemini-2_5-flash_respects_choice_none.yml
- chat_tool_choice_and_calls_control_gemini_gemini-2_5-flash_respects_choice_required_for_unrelated_queries.yml
- chat_tool_choice_and_calls_control_gemini_gemini-2_5-flash_respects_specific_tool_choice.yml
- chat_tool_choice_and_calls_control_mistral_mistral-small-latest_respects_calls_one_for_sequential_execution.yml
- chat_tool_choice_and_calls_control_mistral_mistral-small-latest_respects_choice_none.yml
- chat_tool_choice_and_calls_control_mistral_mistral-small-latest_respects_choice_required_for_unrelated_queries.yml
- chat_tool_choice_and_calls_control_mistral_mistral-small-latest_respects_specific_tool_choice.yml
- chat_tool_choice_and_calls_control_openai_gpt-5-nano_respects_calls_one_for_sequential_execution.yml
- chat_tool_choice_and_calls_control_openai_gpt-5-nano_respects_choice_none.yml
- chat_tool_choice_and_calls_control_openai_gpt-5-nano_respects_choice_required_for_unrelated_queries.yml
- chat_tool_choice_and_calls_control_openai_gpt-5-nano_respects_specific_tool_choice.yml
- chat_tool_choice_and_calls_control_openrouter_claude-haiku-4-5_respects_calls_one_for_sequential_execution.yml
- chat_tool_choice_and_calls_control_openrouter_claude-haiku-4-5_respects_choice_none.yml
- chat_tool_choice_and_calls_control_openrouter_claude-haiku-4-5_respects_choice_required_for_unrelated_queries.yml
- chat_tool_choice_and_calls_control_openrouter_claude-haiku-4-5_respects_specific_tool_choice.yml
- chat_video_models_bedrock_amazon_nova-2-lite-v1_0_can_understand_local_videos.yml
- chat_video_models_bedrock_amazon_nova-2-lite-v1_0_can_understand_remote_videos_without_extension.yml
- chat_video_models_gemini_gemini-2_5-flash_can_understand_local_videos.yml
- chat_video_models_gemini_gemini-2_5-flash_can_understand_remote_videos_without_extension.yml
- chat_video_models_vertexai_gemini-2_5-flash_can_understand_local_videos.yml
- chat_video_models_vertexai_gemini-2_5-flash_can_understand_remote_videos_without_extension.yml
- chat_vision_models_anthropic_claude-haiku-4-5_can_understand_local_images.yml
- chat_vision_models_anthropic_claude-haiku-4-5_can_understand_remote_images_without_extension.yml
- chat_vision_models_azure_grok-4-1-fast-non-reasoning_can_understand_local_images.yml
- chat_vision_models_azure_grok-4-1-fast-non-reasoning_can_understand_remote_images_without_extension.yml
- chat_vision_models_bedrock_claude-sonnet-4-5_can_understand_local_images.yml
- chat_vision_models_bedrock_claude-sonnet-4-5_can_understand_remote_images_without_extension.yml
- chat_vision_models_cohere_command-a-plus-05-2026_can_understand_local_images.yml
- chat_vision_models_cohere_command-a-plus-05-2026_can_understand_remote_images_without_extension.yml
- chat_vision_models_gemini_gemini-2_5-flash_can_understand_local_images.yml
- chat_vision_models_gemini_gemini-2_5-flash_can_understand_remote_images_without_extension.yml
- chat_vision_models_mistral_pixtral-12b_can_understand_local_images.yml
- chat_vision_models_mistral_pixtral-12b_can_understand_remote_images_without_extension.yml
- chat_vision_models_ollama_granite3_2-vision_can_understand_local_images.yml
- chat_vision_models_ollama_granite3_2-vision_can_understand_remote_images_without_extension.yml
- chat_vision_models_openai_gpt-5-nano_can_understand_local_images.yml
- chat_vision_models_openai_gpt-5-nano_can_understand_remote_images_without_extension.yml
- chat_vision_models_openrouter_claude-haiku-4-5_can_understand_local_images.yml
- chat_vision_models_openrouter_claude-haiku-4-5_can_understand_remote_images_without_extension.yml
- chat_vision_models_vertexai_gemini-2_5-flash_can_understand_local_images.yml
- chat_vision_models_vertexai_gemini-2_5-flash_can_understand_remote_images_without_extension.yml
- chat_vision_models_xai_grok-4-1-fast-non-reasoning_can_understand_local_images.yml
- chat_vision_models_xai_grok-4-1-fast-non-reasoning_can_understand_remote_images_without_extension.yml
- chat_web_search_with_anthropic_claude-haiku-4-5_replays_search_turns_so_the_conversation_can_continue.yml
- chat_web_search_with_anthropic_claude-haiku-4-5_searches_cites_and_reports_tool_usage.yml
- chat_web_search_with_anthropic_claude-haiku-4-5_streams_search_turns_and_reconstructs_them.yml
- chat_web_search_with_bedrock_amazon_nova-2-lite-v1_0_grounds_the_answer_with_web_citations.yml
- chat_web_search_with_bedrock_amazon_nova-2-lite-v1_0_streams_grounded_turns.yml
- chat_web_search_with_deepseek_deepseek-v4-flash_searches_server-side_and_records_the_search_turns.yml
- chat_web_search_with_gemini_gemini-3_5-flash_grounds_the_answer_and_exposes_the_queries_it_ran.yml
- chat_web_search_with_openai_gpt-5_2_searches_and_records_the_tool_call_items.yml
- chat_web_search_with_openrouter_openai_gpt-5_2_searches_transparently_returning_citations_and_usage_counters.yml
- chat_web_search_with_xai_grok-4_3_replays_search_turns_so_the_conversation_can_continue.yml
- chat_web_search_with_xai_grok-4_3_searches_cites_and_counts_the_sources_it_used.yml
- chat_with_extended_thinking_anthropic_claude-haiku-4-5_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_anthropic_claude-haiku-4-5_returns_thinking_when_available.yml
- chat_with_extended_thinking_anthropic_claude-haiku-4-5_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_azure_gpt-5-nano_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_azure_gpt-5-nano_returns_thinking_when_available.yml
- chat_with_extended_thinking_azure_gpt-5-nano_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_bedrock_claude-haiku-4-5_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_bedrock_claude-haiku-4-5_returns_thinking_when_available.yml
- chat_with_extended_thinking_bedrock_claude-haiku-4-5_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_cohere_command-a-reasoning-08-2025_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_cohere_command-a-reasoning-08-2025_returns_thinking_when_available.yml
- chat_with_extended_thinking_cohere_command-a-reasoning-08-2025_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_deepseek_deepseek-reasoner_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_deepseek_deepseek-reasoner_returns_thinking_when_available.yml
- chat_with_extended_thinking_deepseek_deepseek-reasoner_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_gemini_gemini-3-flash-preview_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_gemini_gemini-3-flash-preview_returns_thinking_when_available.yml
- chat_with_extended_thinking_gemini_gemini-3-flash-preview_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_gpustack_qwen3_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_gpustack_qwen3_returns_thinking_when_available.yml
- chat_with_extended_thinking_gpustack_qwen3_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_mistral_mistral-small-latest_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_mistral_mistral-small-latest_returns_thinking_when_available.yml
- chat_with_extended_thinking_mistral_mistral-small-latest_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_ollama_qwen3_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_ollama_qwen3_returns_thinking_when_available.yml
- chat_with_extended_thinking_ollama_qwen3_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_openai_gpt-5_4_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_openai_gpt-5_4_returns_thinking_when_available.yml
- chat_with_extended_thinking_openai_gpt-5_4_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_openrouter_claude-haiku-4-5_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_openrouter_claude-haiku-4-5_returns_thinking_when_available.yml
- chat_with_extended_thinking_openrouter_claude-haiku-4-5_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_perplexity_sonar-reasoning-pro_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_perplexity_sonar-reasoning-pro_returns_thinking_when_available.yml
- chat_with_extended_thinking_perplexity_sonar-reasoning-pro_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_vertexai_gemini-3-flash-preview_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_vertexai_gemini-3-flash-preview_returns_thinking_when_available.yml
- chat_with_extended_thinking_vertexai_gemini-3-flash-preview_streams_thinking_content_when_available.yml
- chat_with_extended_thinking_xai_grok-3-mini_preserves_thinking_signatures_between_turns_when_provided.yml
- chat_with_extended_thinking_xai_grok-3-mini_returns_thinking_when_available.yml
- chat_with_extended_thinking_xai_grok-3-mini_streams_thinking_content_when_available.yml
- chat_with_params_anthropic_claude-haiku-4-5_supports_service_tier_param.yml
- chat_with_params_azure_grok-4-1-fast-non-reasoning_supports_response_format_param.yml
- chat_with_params_bedrock_amazon_nova-2-lite-v1_0_supports_top_k_param.yml
- chat_with_params_deepseek_deepseek-chat_supports_response_format_param.yml
- chat_with_params_gemini_gemini-2_5-flash_supports_responseschema_param.yml
- chat_with_params_mistral_mistral-small-latest_supports_response_format_param.yml
- chat_with_params_ollama_qwen3_supports_response_format_param.yml
- chat_with_params_openai_gpt-5-nano_supports_response_format_param.yml
- chat_with_params_openrouter_claude-haiku-4-5_supports_top_k_param.yml
- chat_with_params_perplexity_sonar_supports_json_schema_response_format_param.yml
- chat_with_params_vertexai_gemini-2_5-flash_supports_responseschema_param.yml
- chat_with_params_xai_grok-4-1-fast-non-reasoning_supports_response_format_param.yml
- chat_with_schema_with_anthropic_claude-haiku-4-5_accepts_a_json_schema_and_returns_structured_output.yml
- chat_with_schema_with_anthropic_claude-haiku-4-5_accepts_schematist_schema_class_instances_and_returns_structured_output.yml
- chat_with_schema_with_anthropic_claude-haiku-4-5_allows_removing_schema_mid-conversation.yml
- chat_with_schema_with_azure_grok-4-1-fast-non-reasoning_allows_removing_schema_mid-conversation.yml
- chat_with_schema_with_bedrock_claude-haiku-4-5_accepts_a_json_schema_and_returns_structured_output.yml
- chat_with_schema_with_bedrock_claude-haiku-4-5_accepts_schematist_schema_class_instances_and_returns_structured_output.yml
- chat_with_schema_with_bedrock_claude-haiku-4-5_allows_removing_schema_mid-conversation.yml
- chat_with_schema_with_cohere_command-a-03-2025_accepts_a_json_schema_and_returns_structured_output.yml
- chat_with_schema_with_cohere_command-a-03-2025_accepts_schematist_schema_class_instances_and_returns_structured_output.yml
- chat_with_schema_with_cohere_command-a-03-2025_allows_removing_schema_mid-conversation.yml
- chat_with_schema_with_gemini_gemini-3-flash-preview_accepts_a_json_schema_and_returns_structured_output.yml
- chat_with_schema_with_gemini_gemini-3-flash-preview_accepts_schematist_schema_class_instances_and_returns_structured_output.yml
- chat_with_schema_with_gemini_gemini-3-flash-preview_allows_removing_schema_mid-conversation.yml
- chat_with_schema_with_mistral_mistral-small-latest_allows_removing_schema_mid-conversation.yml
- chat_with_schema_with_openai_gpt-5-nano_accepts_a_json_schema_and_returns_structured_output.yml
- chat_with_schema_with_openai_gpt-5-nano_accepts_schematist_schema_class_instances_and_returns_structured_output.yml
- chat_with_schema_with_openai_gpt-5-nano_allows_removing_schema_mid-conversation.yml
- chat_with_schema_with_openrouter_claude-haiku-4-5_accepts_a_json_schema_and_returns_structured_output.yml
- chat_with_schema_with_openrouter_claude-haiku-4-5_accepts_schematist_schema_class_instances_and_returns_structured_output.yml
- chat_with_schema_with_openrouter_claude-haiku-4-5_allows_removing_schema_mid-conversation.yml
- chat_with_schema_with_vertexai_gemini-3-flash-preview_accepts_a_json_schema_and_returns_structured_output.yml
- chat_with_schema_with_vertexai_gemini-3-flash-preview_accepts_schematist_schema_class_instances_and_returns_structured_output.yml
- chat_with_schema_with_vertexai_gemini-3-flash-preview_allows_removing_schema_mid-conversation.yml
- chat_with_schema_with_xai_grok-4-1-fast-non-reasoning_accepts_a_json_schema_and_returns_structured_output.yml
- chat_with_schema_with_xai_grok-4-1-fast-non-reasoning_accepts_schematist_schema_class_instances_and_returns_structured_output.yml
- chat_with_schema_with_xai_grok-4-1-fast-non-reasoning_allows_removing_schema_mid-conversation.yml
- context_context_chat_operations_uses_context-specific_api_keys.yml
- context_context_embed_operations_allows_specifying_a_model_at_embed_time.yml
- context_context_embed_operations_respects_context-specific_embedding_model.yml
- embedding_basic_functionality_azure_cohere-embed-v3-english_can_handle_a_single_text.yml
- embedding_basic_functionality_azure_cohere-embed-v3-english_can_handle_multiple_texts.yml
- embedding_basic_functionality_azure_cohere-embed-v3-english_handles_single-string_arrays_consistently.yml
- embedding_basic_functionality_bedrock_amazon_titan-embed-text-v2_0_can_handle_a_single_text.yml
- embedding_basic_functionality_bedrock_amazon_titan-embed-text-v2_0_can_handle_a_single_text_with_custom_dimensions.yml
- embedding_basic_functionality_bedrock_amazon_titan-embed-text-v2_0_can_handle_multiple_texts.yml
- embedding_basic_functionality_bedrock_amazon_titan-embed-text-v2_0_can_handle_multiple_texts_with_custom_dimensions.yml
- embedding_basic_functionality_bedrock_amazon_titan-embed-text-v2_0_handles_single-string_arrays_consistently.yml
- embedding_basic_functionality_cohere_embed-v4_0_can_handle_a_single_text.yml
- embedding_basic_functionality_cohere_embed-v4_0_can_handle_a_single_text_with_custom_dimensions.yml
- embedding_basic_functionality_cohere_embed-v4_0_can_handle_multiple_texts.yml
- embedding_basic_functionality_cohere_embed-v4_0_can_handle_multiple_texts_with_custom_dimensions.yml
- embedding_basic_functionality_cohere_embed-v4_0_handles_single-string_arrays_consistently.yml
- embedding_basic_functionality_gemini_gemini-embedding-001_can_handle_a_single_text.yml
- embedding_basic_functionality_gemini_gemini-embedding-001_can_handle_a_single_text_with_custom_dimensions.yml
- embedding_basic_functionality_gemini_gemini-embedding-001_can_handle_multiple_texts.yml
- embedding_basic_functionality_gemini_gemini-embedding-001_can_handle_multiple_texts_with_custom_dimensions.yml
- embedding_basic_functionality_gemini_gemini-embedding-001_handles_single-string_arrays_consistently.yml
- embedding_basic_functionality_mistral_mistral-embed_can_handle_a_single_text.yml
- embedding_basic_functionality_mistral_mistral-embed_can_handle_multiple_texts.yml
- embedding_basic_functionality_mistral_mistral-embed_handles_single-string_arrays_consistently.yml
- embedding_basic_functionality_openai_text-embedding-3-small_can_handle_a_single_text.yml
- embedding_basic_functionality_openai_text-embedding-3-small_can_handle_a_single_text_with_custom_dimensions.yml
- embedding_basic_functionality_openai_text-embedding-3-small_can_handle_multiple_texts.yml
- embedding_basic_functionality_openai_text-embedding-3-small_can_handle_multiple_texts_with_custom_dimensions.yml
- embedding_basic_functionality_openai_text-embedding-3-small_handles_single-string_arrays_consistently.yml
- embedding_basic_functionality_openrouter_openai_text-embedding-3-small_can_handle_a_single_text.yml
- embedding_basic_functionality_openrouter_openai_text-embedding-3-small_can_handle_a_single_text_with_custom_dimensions.yml
- embedding_basic_functionality_openrouter_openai_text-embedding-3-small_can_handle_multiple_texts.yml
- embedding_basic_functionality_openrouter_openai_text-embedding-3-small_can_handle_multiple_texts_with_custom_dimensions.yml
- embedding_basic_functionality_openrouter_openai_text-embedding-3-small_handles_single-string_arrays_consistently.yml
- embedding_basic_functionality_vertexai_text-embedding-004_can_handle_a_single_text.yml
- embedding_basic_functionality_vertexai_text-embedding-004_can_handle_a_single_text_with_custom_dimensions.yml
- embedding_basic_functionality_vertexai_text-embedding-004_can_handle_multiple_texts.yml
- embedding_basic_functionality_vertexai_text-embedding-004_can_handle_multiple_texts_with_custom_dimensions.yml
- embedding_basic_functionality_vertexai_text-embedding-004_handles_single-string_arrays_consistently.yml
- embedding_bedrock_embedding_dialects_bedrock_amazon_nova-2-multimodal-embeddings-v1_0_embeds_a_single_text.yml
- embedding_bedrock_embedding_dialects_bedrock_us_cohere_embed-v4_0_embeds_a_single_text.yml
- embedding_bedrock_embedding_dialects_bedrock_us_cohere_embed-v4_0_embeds_multiple_texts_with_custom_dimensions.yml
- embedding_multimodal_embeddings_gemini_gemini-embedding-2_embeds_an_image_alongside_text.yml
- embedding_multimodal_embeddings_gemini_gemini-embedding-2_embeds_text_with_custom_dimensions.yml
- embedding_perplexity_int8_embeddings_perplexity_pplx-embed-v1-0_6b_decodes_a_single_text_into_int8_vectors.yml
- embedding_perplexity_int8_embeddings_perplexity_pplx-embed-v1-0_6b_handles_multiple_texts_with_custom_dimensions.yml
- embedding_provider-reported_cost_openrouter_openai_text-embedding-3-small_returns_the_exact_cost_the_provider_reported.yml
- error_handles_invalid_api_keys_gracefully.yml
- image_basic_functionality_gemini_gemini-3_1-flash-lite-image_can_paint_images.yml
- image_basic_functionality_gpt-image-1_5_supports_image_edits_with_multiple_images.yml
- image_basic_functionality_openai_gpt-image-1_5_paints_several_images_in_one_request.yml
- image_basic_functionality_openai_gpt-image-1_can_paint_images.yml
- image_basic_functionality_openrouter_google_gemini-3_1-flash-lite-image_can_paint_images.yml
- image_basic_functionality_vertexai_gemini-3_1-flash-lite-image_can_paint_images.yml
- image_basic_functionality_xai_grok-imagine-image_can_paint_images.yml
- image_edit_functionality_with_flexible_sizes_gpt-image-2_accepts_a_16px-multiple_size_on_edits.yml
- image_edit_functionality_with_local_files_customizes_image_output.yml
- image_edit_functionality_with_local_files_supports_image_edits_with_a_valid_local_png.yml
- image_edit_functionality_with_openrouter_reference_images_openrouter_google_gemini-3_1-flash-lite-image_edits_images_passed_via_with.yml
- image_edit_functionality_with_remote_urls_rejects_edits_with_a_url_having_invalid_content_type.yml
- image_edit_functionality_with_remote_urls_rejects_edits_with_a_url_that_returns_404.yml
- image_edit_functionality_with_xai_reference_images_xai_grok-imagine-image-quality_supports_image_edits_with_reference_images.yml
- moderation_moderate_with_openai_provider_can_be_called_directly_on_the_moderation_class.yml
- moderation_moderate_with_openai_provider_moderates_an_image_attachment_without_text.yml
- moderation_moderate_with_openai_provider_moderates_content_and_returns_a_moderation_instance.yml
- moderation_moderate_with_openai_provider_moderates_text_with_an_image_attachment.yml
- moderation_moderate_with_openai_provider_provides_convenience_methods_for_checking_results.yml
- moderation_moderate_with_openai_provider_supports_explicit_model_specification.yml
- ocr_basic_functionality_mistral_mistral-ocr-latest_extracts_markdown_from_a_pdf.yml
- ocr_basic_functionality_mistral_mistral-ocr-latest_passes_options_through_in_provider_vocabulary.yml
- ocr_basic_functionality_uses_the_default_ocr_model_when_none_is_given.yml
- providers_azure_responses_a_gpt-5_6_deployment_calls_tools_which_this_model_generation_rejects_on_chat_completions.yml
- providers_azure_responses_a_gpt-5_6_deployment_routes_to_responses_without_being_asked.yml
- providers_bedrock_mantle_responses_chat_calls_tools_through_the_responses_surface.yml
- providers_bedrock_mantle_responses_chat_chats_through_the_responses_surface.yml
- providers_bedrock_mantle_responses_chat_streams_through_the_responses_surface.yml
- providers_bedrock_mantle_signed_requests_reaches_the_mantle_endpoint_with_bedrock-mantle_credentials.yml
- providers_deepgram_audio_labels_words_with_speakers_when_speaker_names_are_given.yml
- providers_deepgram_audio_lists_the_listening_and_speaking_models.yml
- providers_deepgram_audio_speaks_text_with_aura-2.yml
- providers_deepgram_audio_swaps_the_voice_inside_the_model_id_and_honors_the_format.yml
- providers_deepgram_audio_transcribes_a_local_file_with_nova-3.yml
- providers_deepgram_audio_transcribes_audio_deepgram_fetches_from_a_url.yml
- providers_perplexity_models_list_models_lists_the_models_endpoint_catalog_with_the_search_and_embedding_models_added.yml
- rerank_reranking_with_cohere_rerank-v3_5_limits_results_with_top_n.yml
- rerank_reranking_with_cohere_rerank-v3_5_orders_documents_by_relevance_and_resolves_them_from_the_request.yml
- rerank_reranking_with_openrouter_voyageai_rerank-2_5-lite_orders_documents_by_relevance_and_reports_the_exact_cost.yml
- speech_basic_functionality_deepgram_aura-2-thalia-en_can_speak.yml
- speech_basic_functionality_gemini_gemini-2_5-flash-preview-tts_can_speak.yml
- speech_basic_functionality_mistral_voxtral-mini-tts-latest_can_speak.yml
- speech_basic_functionality_openai_gpt-4o-mini-tts_can_speak.yml
- speech_basic_functionality_openrouter_hexgrad_kokoro-82m_can_speak.yml
- speech_basic_functionality_xai_grok-tts_can_speak.yml
- transcription_basic_functionality_cohere_cohere-transcribe-03-2026_can_transcribe_audio.yml
- transcription_basic_functionality_cohere_cohere-transcribe-03-2026_can_transcribe_with_language_hint.yml
- transcription_basic_functionality_deepgram_nova-3-general_can_transcribe_audio.yml
- transcription_basic_functionality_deepgram_nova-3-general_can_transcribe_with_language_hint.yml
- transcription_basic_functionality_gemini_gemini-2_5-flash_can_transcribe_audio.yml
- transcription_basic_functionality_gemini_gemini-2_5-flash_can_transcribe_with_language_hint.yml
- transcription_basic_functionality_mistral_voxtral-mini-latest_can_transcribe_audio.yml
- transcription_basic_functionality_mistral_voxtral-mini-latest_can_transcribe_with_language_hint.yml
- transcription_basic_functionality_mistral_voxtral-mini-latest_labels_segments_with_speakers_when_speaker_names_are_given.yml
- transcription_basic_functionality_openai_gpt-4o-transcribe-diarize_can_transcribe_audio.yml
- transcription_basic_functionality_openai_gpt-4o-transcribe-diarize_can_transcribe_with_language_hint.yml
- transcription_basic_functionality_openai_gpt-4o-transcribe-diarize_streams_segments_labelled_with_speakers.yml
- transcription_basic_functionality_openai_gpt-4o-transcribe_streams_text_deltas_and_returns_the_final_transcription.yml
- transcription_basic_functionality_openai_whisper-1_can_transcribe_audio.yml
- transcription_basic_functionality_openai_whisper-1_can_transcribe_with_language_hint.yml
- transcription_basic_functionality_openrouter_openai_gpt-4o-mini-transcribe_can_transcribe_audio.yml
- transcription_basic_functionality_openrouter_openai_gpt-4o-mini-transcribe_can_transcribe_with_language_hint.yml
- transcription_basic_functionality_vertexai_gemini-2_5-flash_can_transcribe_audio.yml
- transcription_basic_functionality_vertexai_gemini-2_5-flash_can_transcribe_with_language_hint.yml
- transcription_basic_functionality_xai_grok-stt_can_transcribe_audio.yml
- transcription_basic_functionality_xai_grok-stt_can_transcribe_with_language_hint.yml
- transcription_basic_functionality_xai_grok-stt_labels_words_with_speakers_when_speaker_names_are_given.yml
- uploadedfile_live_uploads_anthropic_uploads_a_pdf_through_the_files_api.yml
- uploadedfile_live_uploads_gemini_gemini-2_5-flash_reuses_an_uploaded_file_in_chat.yml
- uploadedfile_live_uploads_gemini_uploads_a_pdf_through_the_files_api.yml
- uploadedfile_live_uploads_mistral_uploads_a_pdf_through_the_files_api.yml
- uploadedfile_live_uploads_openai_gpt-5-nano_reuses_an_uploaded_file_in_chat.yml
- uploadedfile_live_uploads_openai_uploads_a_pdf_through_the_files_api.yml
- uploadedfile_live_uploads_xai_uploads_a_pdf_through_the_files_api.yml
- video_basic_functionality_gemini_veo-3_1-lite-generate-preview_can_animate_videos.yml
- video_basic_functionality_xai_grok-imagine-video_can_animate_videos.yml
- facts.txt
- ruby.mp3
- ruby.mp4
- ruby.png
- ruby.txt
- ruby.wav
- ruby.xml
- sample.docx
- sample.pdf
- sample.xlsx
- acts_as_action_text_spec.rb
- acts_as_attachment_spec.rb
- acts_as_batch_spec.rb
- acts_as_model_spec.rb
- acts_as_spec.rb
- acts_as_tool_approval_spec.rb
- acts_as_with_context_spec.rb
- attachment_helpers_spec.rb
- chat_methods_spec.rb
- message_methods_spec.rb
- agent_generator_spec.rb
- chat_ui_generator_spec.rb
- install_generator_spec.rb
- schema_generator_spec.rb
- tool_generator_spec.rb
- upgrade_generators_spec.rb
- batches_spec.rb
- chat_spec.rb
- media_spec.rb
- models_spec.rb
- streaming_spec.rb
- tools_spec.rb
- batches_spec.rb
- chat_spec.rb
- embedding_batches_spec.rb
- embeddings_spec.rb
- images_spec.rb
- media_spec.rb
- models_spec.rb
- moderation_spec.rb
- speech_spec.rb
- streaming_spec.rb
- temperature_spec.rb
- tools_spec.rb
- transcription_spec.rb
- chat_spec.rb
- embeddings_spec.rb
- media_spec.rb
- models_spec.rb
- rerank_spec.rb
- streaming_spec.rb
- tools_spec.rb
- transcription_spec.rb
- batches_spec.rb
- chat_spec.rb
- media_spec.rb
- streaming_spec.rb
- models_spec.rb
- speech_spec.rb
- transcription_spec.rb
- models_spec.rb
- speech_spec.rb
- transcription_spec.rb
- batches_spec.rb
- caches_spec.rb
- chat_spec.rb
- embeddings_spec.rb
- images_spec.rb
- media_spec.rb
- models_spec.rb
- speech_spec.rb
- streaming_spec.rb
- tools_spec.rb
- transcription_spec.rb
- videos_spec.rb
- cohere_embeddings_spec.rb
- nova_embeddings_spec.rb
- batches_spec.rb
- chat_spec.rb
- media_spec.rb
- streaming_spec.rb
- anthropic_compaction_spec.rb
- invoke_model_spec.rb
- capabilities_spec.rb
- batches_spec.rb
- chat_completions_spec.rb
- media_spec.rb
- responses_spec.rb
- videos_spec.rb
- files_spec.rb
- mantle_spec.rb
- models_spec.rb
- capabilities_spec.rb
- capabilities_spec.rb
- capabilities_spec.rb
- chat_spec.rb
- capabilities_spec.rb
- capabilities_spec.rb
- models_spec.rb
- batches_spec.rb
- capabilities_spec.rb
- chat_spec.rb
- models_spec.rb
- ocr_spec.rb
- speech_spec.rb
- chat_spec.rb
- media_spec.rb
- capabilities_spec.rb
- chat_spec.rb
- images_spec.rb
- media_spec.rb
- models_spec.rb
- parse_error_spec.rb
- videos_spec.rb
- capabilities_spec.rb
- models_spec.rb
- batches_spec.rb
- batches_spec.rb
- batches_spec.rb
- embeddings_spec.rb
- files_spec.rb
- models_spec.rb
- batches_spec.rb
- images_spec.rb
- models_spec.rb
- responses_spec.rb
- videos_spec.rb
- anthropic_spec.rb
- bedrock_spec.rb
- cohere_spec.rb
- deepgram_spec.rb
- elevenlabs_spec.rb
- gpustack_spec.rb
- ollama_cloud_spec.rb
- ollama_spec.rb
- openai_batches_spec.rb
- openai_spec.rb
- vertexai_spec.rb
- protocol_spec.rb
- agent_dsl_spec.rb
- agent_rails_spec.rb
- agent_rescue_from_spec.rb
- agent_spec.rb
- attachment_spec.rb
- batch_helpers_spec.rb
- batch_spec.rb
- cached_content_spec.rb
- chat_assume_model_exists_spec.rb
- chat_before_request_spec.rb
- chat_cache_until_here_spec.rb
- chat_callbacks_spec.rb
- chat_citations_spec.rb
- chat_compaction_spec.rb
- chat_content_spec.rb
- chat_count_tokens_spec.rb
- chat_end_user_spec.rb
- chat_error_spec.rb
- chat_fallbacks_spec.rb
- chat_functions_spec.rb
- chat_headers_spec.rb
- chat_loop_spec.rb
- chat_model_aliases_spec.rb
- chat_options_spec.rb
- chat_request_options_spec.rb
- chat_schema_spec.rb
- chat_server_tools_spec.rb
- chat_spec.rb
- chat_streaming_spec.rb
- chat_thinking_spec.rb
- chat_tool_approval_spec.rb
- chat_tool_attachments_spec.rb
- chat_tools_spec.rb
- citation_spec.rb
- configuration_spec.rb
- connection_logging_spec.rb
- connection_retry_spec.rb
- context_spec.rb
- cost_spec.rb
- deprecator_spec.rb
- embedding_spec.rb
- error_handling_spec.rb
- error_middleware_spec.rb
- error_spec.rb
- image_spec.rb
- inspectable_spec.rb
- instrumentation_spec.rb
- message_spec.rb
- model_registry_spec.rb
- model_spec.rb
- models_json_validation_spec.rb
- models_local_refresh_spec.rb
- models_merge_spec.rb
- models_refresh_spec.rb
- models_spec.rb
- moderation_spec.rb
- ocr_spec.rb
- prompt_spec.rb
- protocol_contract_spec.rb
- protocol_file_preprocessing_spec.rb
- protocol_spec.rb
- provider_contract_spec.rb
- provider_generator_cli_spec.rb
- provider_scaffold_spec.rb
- provider_spec.rb
- rerank_spec.rb
- search_results_spec.rb
- speech_spec.rb
- stream_accumulator_spec.rb
- streaming_spec.rb
- tool_concurrency_spec.rb
- tool_spec.rb
- transcription_spec.rb
- uploaded_file_spec.rb
- usage_spec.rb
- utils_spec.rb
- video_spec.rb
- workflow_spec.rb
- capture_instrumenter.rb
- chat_helpers.rb
- generator_test_helpers.rb
- models_to_test.rb
- rspec_configuration.rb
- rubyllm_configuration.rb
- simplecov_configuration.rb
- streaming_error_helpers.rb
- vcr_configuration.rb
- release_tasks_spec.rb
- rails_helper.rb
- ruby_llm_gemspec_spec.rb
- ruby_llm_spec.rb
- spec_helper.rb
- models.rake
- release.rake
- vcr.rake
- .env.example
- .flayignore
- .gitignore
- .gitleaks.toml
- .gitleaksignore
- .overcommit.yml
- .rdoc_options
- .rspec
- .rubocop.yml
- AGENTS.md
- Appraisals
- Archspec.rb
- CLAUDE.md
- codecov.yml
- CONTRIBUTING.md
- Gemfile
- LICENSE
- mise.toml
- Rakefile
- README.md
- ruby_llm.gemspec
# Installation Guide
rubySetup Steps
cp .env.example .env
Copy the environment configuration template file.
bundle install
Install the project's Ruby gem dependencies.
bin/rails generate ruby_llm:install
Generate RubyLLM Rails integration files.
bin/rails db:migrate
Run database migrations.
bundle exec rspec
Run the test suite.
Key Commands
bundle install
Install all dependency packages defined in the Gemfile.
bundle exec rspec
Run the project's RSpec tests.
bin/rails generate ruby_llm:install
Generate migrations and initializer files needed for Rails.
bin/rails db:migrate
Apply database tables and migrations.
# Use via CDN
jsDelivrjsDelivr serves any public GitHub repository as a CDN with zero setup. Pick a version and a file to get a ready-to-paste link and snippet.
Command Glossary
Commands referenced in this DOCs, explained below.
bundle
View Details ▼
bundle
Dependency manager for the Ruby programming language.
bundle install
Install all gems defined in the `Gemfile` expected in the working directory:
bundle exec {{command}} {{arguments}}
Execute a command in the context of the current bundle:
bundle update
Update all gems by the rules defined in the `Gemfile` and regenerate `Gemfile.lock`:
gem
View Details ▼
gem
A package manager for the Ruby programming language.
gem search {{regex}} {{[-a|--all]}}
Search for remote gem(s) and show all available versions:
gem install {{gem_name}}
Install the latest version of a gem:
gem install {{gem_name}} {{[-v|--version]}} {{1.0.0}}
Install a specific version of a gem:
