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.
Note: A template git repositiory using this library can be found on github ivcap-works/ivcap-python-ai-tool-template. You may clone that and start from there.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ivcap_ai_tool-0.7.7.tar.gz
.
File metadata
- Download URL: ivcap_ai_tool-0.7.7.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.10.10 Darwin/24.3.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
bfcb8e472c9183be6265b3675c5fe8c6ee4201d1f5cdfb648c50bf3dda24eb44
|
|
MD5 |
641dd337e1033251bcf95f6c653eab6d
|
|
BLAKE2b-256 |
e79bb8a8f77844111bc00cc56f5946f98683eca96508e5d4a4b047ded28b6732
|
File details
Details for the file ivcap_ai_tool-0.7.7-py3-none-any.whl
.
File metadata
- Download URL: ivcap_ai_tool-0.7.7-py3-none-any.whl
- Upload date:
- Size: 21.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.10.10 Darwin/24.3.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
e2b490961ea92ab205504fc21fd4f4dfac85d3f77bb021528d90e03aa8b3a902
|
|
MD5 |
44af269acb712e3e959b2d201926bd6a
|
|
BLAKE2b-256 |
2d4072d4d828b4195795fdca0cbeee30d60500a29f6ba123d6b20a8876cb3415
|