aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-07-06 08:36:48 +0800
committerGitHub <noreply@github.com>2024-07-06 08:36:48 +0800
commit58d2ee0494c3b80ca1dc6ed46a42b32d2aa9a85c (patch)
tree2e3b94f5d15566ec06c03542355b788c0ee18573 /tools
parente68aa0c04366fb7b5dd648b2d2e619175ea7d922 (diff)
downloadllm-functions-docker-58d2ee0494c3b80ca1dc6ed46a42b32d2aa9a85c.tar.gz
feat: add more search tools (#62)
Diffstat (limited to 'tools')
-rwxr-xr-xtools/search_google.sh20
-rwxr-xr-xtools/search_wikipedia.sh26
2 files changed, 46 insertions, 0 deletions
diff --git a/tools/search_google.sh b/tools/search_google.sh
new file mode 100755
index 0000000..5d3e1f0
--- /dev/null
+++ b/tools/search_google.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+set -e
+
+# @describe Perform a web search using Google Search API to get up-to-date information or additional context.
+# Use this when you need current information or feel a search could provide a better answer.
+
+# @env GOOGLE_API_KEY! The api key
+# @env GOOGLE_CSE_ID! The id of google search engine
+# @env GOOGLE_MAX_RESULTS=5 The max results to return.
+# @option --query! The query to search for.
+
+main() {
+ encoded_query="$(jq -nr --arg q "$argc_query" '$q|@uri')"
+ url="https://www.googleapis.com/customsearch/v1?key=$GOOGLE_API_KEY&cx=$GOOGLE_CSE_ID&q=$encoded_query"
+ curl -fsSL "$url" | \
+ jq '[.items[:'"$GOOGLE_MAX_RESULTS"'] | .[] | {title: .title, link: .link, snippet: .snippet}]'
+}
+
+eval "$(argc --argc-eval "$0" "$@")"
+
diff --git a/tools/search_wikipedia.sh b/tools/search_wikipedia.sh
new file mode 100755
index 0000000..b352e40
--- /dev/null
+++ b/tools/search_wikipedia.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+set -e
+
+# @describe Searche Wikipedia for a query.
+# Uses it to get detailed information about a public figure, interpretation of a complex scientific concept or in-depth connectivity of a significant historical event,.
+
+# @option --query! The query to search for.
+
+main() {
+ encoded_query="$(jq -nr --arg q "$argc_query" '$q|@uri')"
+ search_url="https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=$encoded_query&format=json"
+ title="$(curl -fsSL "$search_url" | jq -r '.query.search[0].title' 2>/dev/null)"
+ if [[ -z "$title" ]]; then
+ echo "Error: No results found for '$argc_query'"
+ exit 1
+ fi
+ title="$(echo "$title" | tr ' ' '_')"
+ page_url="https://en.wikipedia.org/api/rest_v1/page/summary/$title"
+ summary="$(curl -fsSL "$page_url" | jq -r '.extract')"
+ echo '{
+ "link": "https://en.wikipedia.org/wiki/'"$title"'",
+ "summary": "'"$summary"'"
+}'
+}
+
+eval "$(argc --argc-eval "$0" "$@")"