From 07ce5ccaf634beee7ab14c86130c8cb659d96e31 Mon Sep 17 00:00:00 2001 From: sigoden Date: Sat, 18 May 2024 10:21:57 +0800 Subject: [PATCH] refactor: retrieve function returns json (#4) --- Argcfile.sh | 1 - bin/execute_command | 2 +- bin/search_duckduckgo | 8 ++------ bin/search_wolframalpha | 9 +++++---- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Argcfile.sh b/Argcfile.sh index 67ff6d6..ddbc337 100644 --- a/Argcfile.sh +++ b/Argcfile.sh @@ -3,7 +3,6 @@ set -e # @meta dotenv - # @cmd Call the function # @arg func![`_choice_func`] The function name # @arg args~[?`_choice_func_args`] The function args diff --git a/bin/execute_command b/bin/execute_command index fab84bd..64fb440 100755 --- a/bin/execute_command +++ b/bin/execute_command @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -e -# @describe Executes a shell command and returns the output. +# @describe Executes a shell command. This tool does not return data to LLM. # @option --shell-command~ "Shell command to execute, such as `ls -la`" main() { diff --git a/bin/search_duckduckgo b/bin/search_duckduckgo index 49f7028..c5ab565 100755 --- a/bin/search_duckduckgo +++ b/bin/search_duckduckgo @@ -4,17 +4,13 @@ set -e # @describe Takes in a query string and returns search result from DuckDuckGo. # Use it to answer user questions that require dates, facts, real-time information, or news. # This ensures accurate and up-to-date answers. -# + # @meta require-tools ddgr # @env DDG_MAX_RESULTS=5 The max results to return. # @option --query! The query to search for. main() { - ddgr -n $DDG_MAX_RESULTS --json "$argc_query" | \ - jq -r '. as $input | -reduce range(0; length) as $i ([]; . + [ $input[$i] | .index = $i ]) | -.[] | "### \(.index+1). \u001b]8;;\(.url)\u001b\\\(.title)\u001b]8;;\u001b\\\n\(.abstract)\n" -' + ddgr -n $DDG_MAX_RESULTS --json "$argc_query" } eval "$(argc --argc-eval "$0" "$@")" diff --git a/bin/search_wolframalpha b/bin/search_wolframalpha index 6529ef0..a2dfdc7 100755 --- a/bin/search_wolframalpha +++ b/bin/search_wolframalpha @@ -4,9 +4,9 @@ set -e # @describe Get an answer to a question using Wolfram Alpha. Input should the query in English. # Use it to answer user questions that require computation, detailed facts, data analysis, or complex queries. # This ensures accurate and precise answers. -# @option --query! The query to search for. -# @env WOLFRAM_API_KEY! The API key used to connect to WolframAlpha +# @option --query! The query to search for. +# @env WOLFRAM_API_ID! main() { local curl_args=( @@ -14,10 +14,11 @@ main() { --data-urlencode "output=JSON" --data-urlencode "format=plaintext" --data-urlencode "input=$argc_query" - --data-urlencode "appid=$WOLFRAM_API_KEY" + --data-urlencode "appid=$WOLFRAM_API_ID" "https://api.wolframalpha.com/v2/query" ) - curl "${curl_args[@]}" | jq -r '.queryresult.pods[] | select(.subpods[0].plaintext != "") | .title, .subpods[0].plaintext' + curl "${curl_args[@]}" | \ + jq -r '.queryresult.pods[] | select(.subpods[0].plaintext != "")' } eval "$(argc --argc-eval "$0" "$@")"