Source code for genlayer.std.nondet_fns

__all__ = ('get_webpage', 'exec_prompt', 'GetWebpageKwArgs', 'ExecPromptKwArgs')

import typing
from ._internal import lazy_from_fd, _lazy_api
from ..py.types import *
import genlayer.std._wasi as wasi
import json


[docs] class GetWebpageKwArgs(typing.TypedDict): mode: typing.Literal['html', 'text'] """ Mode in which to return the result """ wait_after_loaded: typing.NotRequired[str] """ How long to wait after dom loaded (for js to emit dynamic content) Should be in format such as "1000ms" or "1s" """
[docs] @_lazy_api def get_webpage(url: str, **config: typing.Unpack[GetWebpageKwArgs]) -> Lazy[str]: """ API to get a webpage after rendering it :param url: url of website :type url: ``str`` :param \\*\\*config: configuration :type \\*\\*config: :py:class:`GetWebpageKwArgs` :rtype: ``str`` """ payload = {'url': url, **config} return lazy_from_fd( wasi.web_render(json.dumps(payload)), lambda buf: json.loads(bytes(buf))['text'] )
[docs] class ExecPromptKwArgs(typing.TypedDict): response_format: typing.NotRequired[typing.Literal['text', 'json']] """ Defaults to ``text`` """
@typing.overload def exec_prompt(prompt: str) -> str: ... @typing.overload def exec_prompt(prompt: str, response_format: typing.Literal['text']) -> str: ... @typing.overload def exec_prompt( prompt: str, response_format: typing.Literal['json'] ) -> dict[str, typing.Any]: ...
[docs] @_lazy_api def exec_prompt( prompt: str, **config: typing.Unpack[ExecPromptKwArgs] ) -> Lazy[str | dict]: """ API to execute a prompt (perform NLP) :param prompt: prompt itself :type prompt: ``str`` :param \\*\\*config: configuration :type \\*\\*config: :py:class:`ExecPromptKwArgs` :rtype: ``str`` """ payload = {'prompt': prompt, **config} return lazy_from_fd( wasi.exec_prompt(json.dumps(payload)), lambda buf: json.loads(bytes(buf)) )