Skip to main content

Helper functions for building AI Tools as IVCAP services

Project description

ivcap_ai_tool: A python library for building AI tools for the IVCAP platform

A python library containing various helper and middleware functions to simplify developing AI tools to be deployed on IVCAP.

Content

Register a Tool Function

class Request(BaseModel):
    jschema: str = Field("urn:sd:schema:some_tool.request.1", alias="$schema")
    ...

class Result(BaseModel):
    jschema: str = Field("urn:sd:schema:some_tool.1", alias="$schema")
    ...

def some_tool(req: Request) -> Result:
    """
    Here should go a quite extensive description of what the tool can be
    used for so that an agent can work out if this tool is useful in
    a specific context.

    DO NOT ADD PARAMTER AND RETURN DECRIPTIONS -
       DESCRIBE THEM IN THE `Request` MODEL
    """
    ...

    return Result(...)

add_tool_api_route(app, "/", some_tool, opts=ToolOptions(tags=["Great Tool"]))

Start the Service

app = FastAPI(
  ..
)

if __name__ == "__main__":
    start_tool_server(app, some_tool)

JSON-RPC Middleware

This middleware will convert any POST / with a payload following the JSON-RPC specification to an internal POST /{method} and will return the result formatted according to the JSON-RPC spec.

from ivcap_fastapi import use_json_rpc_middleware

app = FastAPI(
  ..
)

use_json_rpc_middleware(app)

Try-Later Middleware

This middleware is supporting the use case where the execution of a requested service is taking longer than the caller is willing to wait. A typical use case is where the service is itself outsourcing the execution to some other long-running service but may immediately receive a reference to the eventual result.

In this case, raising a TryLaterException will return with a 204 status code and additional information on how to later check back for the result.

from ivcap_fastapi import TryLaterException, use_try_later_middleware
use_try_later_middleware(app)

@app.post("/big_job")
def big_job(req: Request) -> Response:
    jobID, expected_exec_time = scheduling_big_job(req)
    raise TryLaterException(f"/big_job/jobs/{jobID}", expected_exec_time)

@app.get("/big_job/jobs/{jobID}")
def get_job(jobID: str) -> Response:
    resp = find_result_for(job_id)
    return resp

Specifically, raising TryLaterException(location, delay) will return an HTTP response with a 204 status code with the additional HTTP headers Location and Retry-Later set to location and delay respectively.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ivcap_ai_tool-0.4.3.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ivcap_ai_tool-0.4.3-py2.py3-none-any.whl (16.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file ivcap_ai_tool-0.4.3.tar.gz.

File metadata

  • Download URL: ivcap_ai_tool-0.4.3.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.16 Darwin/24.2.0

File hashes

Hashes for ivcap_ai_tool-0.4.3.tar.gz
Algorithm Hash digest
SHA256 8d60a6e2efd51c5e134f73c39c20fb56d3220a705929cd64d62c9fddb5525152
MD5 328c0cf39e32fbcff4e4005b10edc45b
BLAKE2b-256 2b55aba5ea068dba4f9b7d3dcda0f4004b7e2fbb2d46130e0b3e4f9f49cc2f86

See more details on using hashes here.

File details

Details for the file ivcap_ai_tool-0.4.3-py2.py3-none-any.whl.

File metadata

  • Download URL: ivcap_ai_tool-0.4.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 16.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.16 Darwin/24.2.0

File hashes

Hashes for ivcap_ai_tool-0.4.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 43fc0b02de24b163a2b94b39874ecdf73477f5fd2ccc78db65ef4ace6db5a839
MD5 b61c4165c017e9c7d39278f6562c2675
BLAKE2b-256 2a4ecb402e0ce22052fb577f54fc9e0e8eb58df20d71224a7f47734f614b0cda

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page