From 6d37d440a6e33d0664996618b07c2a4306632279 Mon Sep 17 00:00:00 2001
From: Savas Ziplies <nea@users.noreply.github.com>
Date: Fri, 14 Feb 2025 09:17:03 +0100
Subject: [PATCH] refactor(agent): changed regex for tool use extraction to
 look for optional "Input:" prefix to comply with Cohere command-r models
 (#1654)

---
 .changeset/sweet-llamas-dress.md       | 5 +++++
 packages/llamaindex/src/agent/react.ts | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)
 create mode 100644 .changeset/sweet-llamas-dress.md

diff --git a/.changeset/sweet-llamas-dress.md b/.changeset/sweet-llamas-dress.md
new file mode 100644
index 000000000..024d67edd
--- /dev/null
+++ b/.changeset/sweet-llamas-dress.md
@@ -0,0 +1,5 @@
+---
+"llamaindex": patch
+---
+
+fix: Update react agent to support tool calls from Cohere command-r models
diff --git a/packages/llamaindex/src/agent/react.ts b/packages/llamaindex/src/agent/react.ts
index abfa1d24c..cfd6e6880 100644
--- a/packages/llamaindex/src/agent/react.ts
+++ b/packages/llamaindex/src/agent/react.ts
@@ -100,7 +100,7 @@ function extractToolUse(
   inputText: string,
 ): [thought: string, action: string, input: string] {
   const pattern =
-    /\s*Thought: (.*?)\nAction: ([a-zA-Z0-9_]+).*?\.*Input: .*?(\{.*?\})/s;
+    /\s*Thought: (.*?)\nAction: ([a-zA-Z0-9_]+).*?\.*[Input:]*.*?(\{.*?\})/s;
 
   const match = inputText.match(pattern);
 
-- 
GitLab