diff options
| author | sigoden <sigoden@gmail.com> | 2024-07-11 21:43:31 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-11 21:43:31 +0800 |
| commit | 5600b68e044b4cd9bc55664ce3f41e9a339fc805 (patch) | |
| tree | 053bc2a7cd88d6a30e1db161a4152d7cd4c1d7af | |
| parent | b56159903bb16dbabec1a8767702c3c0865ef256 (diff) | |
| download | llm-functions-docker-5600b68e044b4cd9bc55664ce3f41e9a339fc805.tar.gz | |
feat: add jina tools (#73)
| -rwxr-xr-x | tools/fetch_url_via_curl.sh | 16 | ||||
| -rwxr-xr-x | tools/fetch_url_via_jina.sh | 17 | ||||
| -rwxr-xr-x | tools/get_web_page.sh | 16 | ||||
| -rwxr-xr-x | tools/search_jina.sh | 22 |
4 files changed, 55 insertions, 16 deletions
diff --git a/tools/fetch_url_via_curl.sh b/tools/fetch_url_via_curl.sh new file mode 100755 index 0000000..2f2efdc --- /dev/null +++ b/tools/fetch_url_via_curl.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -e + +# @describe Extract the content from a given URL. +# @meta require-tools pandoc +# @option --url! The URL to scrape. + +main() { + # span and div tags are dropped from the HTML https://pandoc.org/MANUAL.html#raw-htmltex and sed removes any inline SVG images in image tags from the Markdown content. + curl -fsSL "$argc_url" | \ + pandoc -f html-native_divs-native_spans -t gfm-raw_html | \ + sed -E 's/!\[.*?\]\((data:image\/svg\+xml[^)]+)\)//g' \ + >> "$LLM_OUTPUT" +} + +eval "$(argc --argc-eval "$0" "$@")" diff --git a/tools/fetch_url_via_jina.sh b/tools/fetch_url_via_jina.sh new file mode 100755 index 0000000..add01ee --- /dev/null +++ b/tools/fetch_url_via_jina.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +set -e + +# @describe Extract the content from a given URL. + +# @env JINA_API_KEY The api key +# @option --url! The URL to scrape. + +main() { + curl_args=() + if [[ -n "$JINA_API_KEY" ]]; then + curl_args+=("-H" "Authorization: Bearer $JINA_API_KEY") + fi + curl -fsSL "${curl_args[@]}" "https://r.jina.ai/$argc_url" >> "$LLM_OUTPUT" +} + +eval "$(argc --argc-eval "$0" "$@")" diff --git a/tools/get_web_page.sh b/tools/get_web_page.sh deleted file mode 100755 index 7a516bb..0000000 --- a/tools/get_web_page.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash -set -e - -# @describe Get webpage content from a given URL. -# @meta require-tools pandoc -# @option --url! The URL to scrape. - -main() { - # span and div tags are dropped from the HTML https://pandoc.org/MANUAL.html#raw-htmltex and sed removes any inline SVG images in image tags from the Markdown content. - curl -fsSL "$argc_url" | \ - pandoc -f html-native_divs-native_spans -t gfm-raw_html | \ - sed -E 's/!\[.*?\]\((data:image\/svg\+xml[^)]+)\)//g' \ - >> "$LLM_OUTPUT" -} - -eval "$(argc --argc-eval "$0" "$@")" diff --git a/tools/search_jina.sh b/tools/search_jina.sh new file mode 100755 index 0000000..3e6d706 --- /dev/null +++ b/tools/search_jina.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -e + +# @describe Perform a web search using Jina 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 JINA_API_KEY The api key +# @env JINA_MAX_RESULTS=5 The max results to return. +# @option --query! The query to search for. + +main() { + curl_args=("-H" "Accept: application/json") + if [[ -n "$JINA_API_KEY" ]]; then + curl_args+=("-H" "Authorization: Bearer $JINA_API_KEY") + fi + encoded_query="$(jq -nr --arg q "$argc_query" '$q|@uri')" + curl -fsSL "${curl_args[@]}" "https://s.jina.ai/$encoded_query" | \ + jq '[.data[:'"$JINA_MAX_RESULTS"'] | .[] | {title: .title, url: .url, description: .description}]' \ + >> "$LLM_OUTPUT" +} + +eval "$(argc --argc-eval "$0" "$@")" |
