
Fetch
The JavaScript fetch
API is available; but we also provide a helper
fetchText
for issuing requests into a friendly format.
host.fetch
Section titled “host.fetch”The host.fetch
function is a wrapper around the global fetch
function which adds builtin proxy support and retry capabilities.
const response = await host.fetch("https://api.example.com", { retries: 3 })
host.fetchText
Section titled “host.fetchText”Use host.fetchText
to issue requests and download text from the internet.
const { text, file } = await host.fetchText("https://....")if (text) $`And also ${text}`
def("FILE", file)
fetchText
will also resolve the contents of file in the current workspace if the url is a relative path.
const { file } = await host.fetchText("README.md")def("README", file)
HTML to markdown or text
Section titled “HTML to markdown or text”fetchText
provides various converters to extract the text from the HTML source to a more compact text representation.
If you plan to use HTML source in your LLM calls, you will surely run out of context!
// markdownconst md = await host.fetch("https://...", { convert: "markdown" })// textconst md = await host.fetch("https://...", { convert: "text" })
host.resolveResource
Section titled “host.resolveResource”Use host.resolveResource
to resolve and download resources from URLs. This function handles various URL schemes and protocols,
and can resolve GitHub blob URLs to raw content, among other transformations.
const result = await host.resolveResource("https://github.com/microsoft/genaiscript/blob/main/docs/public/images/favicon.png")if (result) { console.log(`Resolved URI: ${result.uri}`) for (const file of result.files) { console.log(`File: ${file.filename}`) if (file.content) { console.log(`Binary content: ${file.content.length} bytes`) } else if (file.text) { console.log(`Text content: ${file.text.length} characters`) } }}
The function returns an object with:
uri
: The resolved URL as a URL objectfiles
: An array of resolved files with their content
Secrets
Section titled “Secrets”If the API you are querying requires an API key, you can use the secrets object to store the key.