From 539e94db731badf8878c23a71b00d3b02dacaf7e Mon Sep 17 00:00:00 2001 From: Maximilian Kenfenheuer Date: Mon, 27 Jan 2025 16:53:05 +0100 Subject: [PATCH 1/5] feat: function argument parsing using named regex (#4700) Signed-off-by: Maximilian Kenfenheuer --- pkg/functions/parse.go | 45 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/pkg/functions/parse.go b/pkg/functions/parse.go index f5593690..7b8df91e 100644 --- a/pkg/functions/parse.go +++ b/pkg/functions/parse.go @@ -5,6 +5,7 @@ import ( "errors" "io" "regexp" + "slices" "strings" "github.com/mudler/LocalAI/pkg/functions/grammars" @@ -71,6 +72,12 @@ type FunctionsConfig struct { // JSONRegexMatch is a regex to extract the JSON object from the response JSONRegexMatch []string `yaml:"json_regex_match"` + // ArgumentRegex is a named regex to extract the arguments from the response. Use ArgumentRegexKey and ArgumentRegexValue to set the names of the named regex for key and value of the arguments. + ArgumentRegex []string `yaml:"argument_regex"` + // ArgumentRegex named regex names for key and value extractions. default: key and value + ArgumentRegexKey string `yaml:"argument_regex_key_name"` // default: key + ArgumentRegexValue string `yaml:"argument_regex_value_name"` // default: value + // ReplaceFunctionResults allow to replace strings in the results before parsing them ReplaceFunctionResults []ReplaceResult `yaml:"replace_function_results"` @@ -310,7 +317,7 @@ func ParseFunctionCall(llmresult string, functionConfig FunctionsConfig) []FuncC if functionName == "" { return results } - results = append(results, FuncCallResults{Name: result[functionNameKey], Arguments: result[functionArgumentsKey]}) + results = append(results, FuncCallResults{Name: result[functionNameKey], Arguments: ParseFunctionCallArgs(result[functionArgumentsKey], functionConfig)}) } } } else { @@ -322,3 +329,39 @@ func ParseFunctionCall(llmresult string, functionConfig FunctionsConfig) []FuncC return results } + +func ParseFunctionCallArgs(functionArguments string, functionConfig FunctionsConfig) string { + if len(functionConfig.ArgumentRegex) > 0 { + // We use named regexes here to extract the function argument key value pairs and convert this to valid json. + // TODO: there might be responses where an object as a value is expected/required. This is currently not handled. + args := make(map[string]string) + + agrsRegexKeyName := "key" + agrsRegexValueName := "value" + + if functionConfig.ArgumentRegexKey != "" { + agrsRegexKeyName = functionConfig.ArgumentRegexKey + } + if functionConfig.ArgumentRegexValue != "" { + agrsRegexValueName = functionConfig.ArgumentRegexValue + } + + for _, r := range functionConfig.ArgumentRegex { + var respRegex = regexp.MustCompile(r) + var nameRange []string = respRegex.SubexpNames() + var keyIndex = slices.Index(nameRange, agrsRegexKeyName) + var valueIndex = slices.Index(nameRange, agrsRegexValueName) + matches := respRegex.FindAllStringSubmatch(functionArguments, -1) + for _, match := range matches { + args[match[keyIndex]] = match[valueIndex] + } + } + + jsonBytes, _ := json.Marshal(args) + jsonString := string(jsonBytes) + + return jsonString + } else { + return functionArguments + } +} From fff35d5528a573935cad76489974d39b8cebfff3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 21:09:50 +0000 Subject: [PATCH 2/5] chore(deps): Bump sentence-transformers from 3.3.1 to 3.4.0 in /backend/python/transformers (#4702) chore(deps): Bump sentence-transformers in /backend/python/transformers Bumps [sentence-transformers](https://github.com/UKPLab/sentence-transformers) from 3.3.1 to 3.4.0. - [Release notes](https://github.com/UKPLab/sentence-transformers/releases) - [Commits](https://github.com/UKPLab/sentence-transformers/compare/v3.3.1...v3.4.0) --- updated-dependencies: - dependency-name: sentence-transformers dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- backend/python/transformers/requirements-cpu.txt | 2 +- backend/python/transformers/requirements-cublas11.txt | 2 +- backend/python/transformers/requirements-cublas12.txt | 2 +- backend/python/transformers/requirements-hipblas.txt | 2 +- backend/python/transformers/requirements-intel.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/python/transformers/requirements-cpu.txt b/backend/python/transformers/requirements-cpu.txt index c88508e3..36dc973a 100644 --- a/backend/python/transformers/requirements-cpu.txt +++ b/backend/python/transformers/requirements-cpu.txt @@ -5,4 +5,4 @@ accelerate transformers bitsandbytes outetts -sentence-transformers==3.3.1 \ No newline at end of file +sentence-transformers==3.4.0 \ No newline at end of file diff --git a/backend/python/transformers/requirements-cublas11.txt b/backend/python/transformers/requirements-cublas11.txt index 0faa9cec..a8b1c0c0 100644 --- a/backend/python/transformers/requirements-cublas11.txt +++ b/backend/python/transformers/requirements-cublas11.txt @@ -6,4 +6,4 @@ accelerate transformers bitsandbytes outetts -sentence-transformers==3.3.1 +sentence-transformers==3.4.0 diff --git a/backend/python/transformers/requirements-cublas12.txt b/backend/python/transformers/requirements-cublas12.txt index 1e22312f..a54c4c88 100644 --- a/backend/python/transformers/requirements-cublas12.txt +++ b/backend/python/transformers/requirements-cublas12.txt @@ -5,4 +5,4 @@ numba==0.60.0 transformers bitsandbytes outetts -sentence-transformers==3.3.1 +sentence-transformers==3.4.0 diff --git a/backend/python/transformers/requirements-hipblas.txt b/backend/python/transformers/requirements-hipblas.txt index 47aa88db..73b7d85b 100644 --- a/backend/python/transformers/requirements-hipblas.txt +++ b/backend/python/transformers/requirements-hipblas.txt @@ -7,4 +7,4 @@ numba==0.60.0 bitsandbytes outetts bitsandbytes -sentence-transformers==3.3.1 +sentence-transformers==3.4.0 diff --git a/backend/python/transformers/requirements-intel.txt b/backend/python/transformers/requirements-intel.txt index 708b0516..5b677199 100644 --- a/backend/python/transformers/requirements-intel.txt +++ b/backend/python/transformers/requirements-intel.txt @@ -8,4 +8,4 @@ numba==0.60.0 intel-extension-for-transformers bitsandbytes outetts -sentence-transformers==3.3.1 +sentence-transformers==3.4.0 From 03f3df9a82dd8452abc9bae93f3b7cfb3063e322 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 09:13:00 +0100 Subject: [PATCH 3/5] chore(deps): Bump docs/themes/hugo-theme-relearn from `8dad5ee` to `5bcb9fe` (#4704) chore(deps): Bump docs/themes/hugo-theme-relearn Bumps [docs/themes/hugo-theme-relearn](https://github.com/McShelby/hugo-theme-relearn) from `8dad5ee` to `5bcb9fe`. - [Release notes](https://github.com/McShelby/hugo-theme-relearn/releases) - [Commits](https://github.com/McShelby/hugo-theme-relearn/compare/8dad5ee419e5bb2a0b380aa72d7a7389af4945f6...5bcb9fe5e61d2fbe702034a24425992fd2455b0a) --- updated-dependencies: - dependency-name: docs/themes/hugo-theme-relearn dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- docs/themes/hugo-theme-relearn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/themes/hugo-theme-relearn b/docs/themes/hugo-theme-relearn index 8dad5ee4..5bcb9fe5 160000 --- a/docs/themes/hugo-theme-relearn +++ b/docs/themes/hugo-theme-relearn @@ -1 +1 @@ -Subproject commit 8dad5ee419e5bb2a0b380aa72d7a7389af4945f6 +Subproject commit 5bcb9fe5e61d2fbe702034a24425992fd2455b0a From 3d0fbcb4f7331d1d7abca50d9719ea7e232cbdb3 Mon Sep 17 00:00:00 2001 From: "LocalAI [bot]" <139863280+localai-bot@users.noreply.github.com> Date: Tue, 28 Jan 2025 09:13:43 +0100 Subject: [PATCH 4/5] chore: :arrow_up: Update ggerganov/llama.cpp to `a4417ddda98fd0558fb4d802253e68a933704b59` (#4705) :arrow_up: Update ggerganov/llama.cpp Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: mudler <2420543+mudler@users.noreply.github.com> --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f960194c..08c334a3 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ DETECT_LIBS?=true # llama.cpp versions GOLLAMA_REPO?=https://github.com/go-skynet/go-llama.cpp GOLLAMA_VERSION?=2b57a8ae43e4699d3dc5d1496a1ccd42922993be -CPPLLAMA_VERSION?=178a7eb952d211b8d4232d5e50ae1b64519172a9 +CPPLLAMA_VERSION?=a4417ddda98fd0558fb4d802253e68a933704b59 # whisper.cpp version WHISPER_REPO?=https://github.com/ggerganov/whisper.cpp From d9204ea3b5b0edbfb1e980fa559a7fa79ac8f1ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 11:50:09 +0100 Subject: [PATCH 5/5] chore(deps): Bump dependabot/fetch-metadata from 2.2.0 to 2.3.0 (#4701) Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 2.2.0 to 2.3.0. - [Release notes](https://github.com/dependabot/fetch-metadata/releases) - [Commits](https://github.com/dependabot/fetch-metadata/compare/v2.2.0...v2.3.0) --- updated-dependencies: - dependency-name: dependabot/fetch-metadata dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/dependabot_auto.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dependabot_auto.yml b/.github/workflows/dependabot_auto.yml index 951e65e1..5bcd84f6 100644 --- a/.github/workflows/dependabot_auto.yml +++ b/.github/workflows/dependabot_auto.yml @@ -14,7 +14,7 @@ jobs: steps: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@v2.2.0 + uses: dependabot/fetch-metadata@v2.3.0 with: github-token: "${{ secrets.GITHUB_TOKEN }}" skip-commit-verification: true