Skip to main content

No project description provided

Project description

KitchenAI SDK

KitchenAI SDK is a powerful tool for authoring and defining AI cookbooks in well-defined stages. It allows you to easily create portable AI frameworks that can run alongside your code as a sidecar.

Features

  • Wrap FastAPI applications with KitchenAI functionality
  • Define query, storage, embedding, and runnable endpoints
  • Automatic Pydantic model integration for request body parsing
  • Metadata management for easy discovery of endpoints
  • Support for both synchronous and asynchronous handlers

Installation

Install the KitchenAI SDK using pip:

pip install kitchenai-sdk

Quick Start

Here's a simple example to get you started with the KitchenAI SDK:

from fastapi import FastAPI, Request
from kitchenai_sdk import KitchenAIApp
from pydantic import BaseModel

app = FastAPI()
kitchen = KitchenAIApp(app_instance=app)

class QueryRequest(BaseModel):
    query: str

@kitchen.query("simple-query")
def simple_query(request: Request, body: QueryRequest):
    return {"result": f"Processed query: {body.query}"}

# Run with: uvicorn main:app

Detailed Usage

Initialization

from fastapi import FastAPI
from kitchenai_sdk import KitchenAIApp

app = FastAPI()
kitchen = KitchenAIApp(app_instance=app, namespace="my-cookbook")

Defining Endpoints

KitchenAI SDK provides decorators for different types of endpoints:

Query Endpoint

@kitchen.query("my-query")
async def my_query(request: Request, body: QueryRequest):
    # Your query logic here
    return {"result": "Query processed"}

Storage Endpoint

@kitchen.storage("store-data")
async def store_data(request: Request):
    # Your storage logic here
    return {"status": "Data stored"}

Embedding Endpoint

@kitchen.embedding("generate-embedding")
def generate_embedding(request: Request):
    # Your embedding logic here
    return {"embedding": [0.1, 0.2, 0.3]}

Runnable Endpoint

@kitchen.runnable("custom-workflow")
async def custom_workflow(request: Request):
    # Your custom workflow logic here
    return {"status": "Workflow completed"}

Using Pydantic Models

KitchenAI SDK automatically detects Pydantic models in your function signatures:

class MyModel(BaseModel):
    field1: str
    field2: int

@kitchen.query("pydantic-example")
def pydantic_example(request: Request, body: MyModel):
    return {"received": body.dict()}

Streaming Responses

You can use StreamingResponse for long-running or real-time operations:

from fastapi.responses import StreamingResponse

@kitchen.query("streaming-query")
def streaming_query(request: Request, body: QueryRequest):
    def generate():
        for i in range(10):
            yield f"Data chunk {i}\n"
    
    return StreamingResponse(generate(), media_type="text/plain")

Best Practices

  1. Use descriptive labels for your endpoints to make them easily discoverable.
  2. Leverage Pydantic models for request validation and documentation.
  3. Implement proper error handling in your endpoint functions.
  4. Use asynchronous functions for I/O-bound operations to improve performance.
  5. Organize your cookbook into logical sections using the different endpoint types.

Running Your Cookbook

To run your KitchenAI cookbook:

  1. Create your FastAPI app and KitchenAI wrapper as shown in the examples.
  2. Run your app using an ASGI server like Uvicorn:
uvicorn main:app --reload
  1. Your KitchenAI endpoints will be available under the specified namespace, e.g., /default/query/my-query.

Contributing

We welcome contributions to the KitchenAI SDK! Please see our Contributing Guidelines for more details.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For support, please open an issue on our GitHub repository or contact our support team at support@kitchenai.com.


Happy cooking with KitchenAI! 🍳🤖

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

kitchenai_sdk-0.1.4a2.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

kitchenai_sdk-0.1.4a2-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file kitchenai_sdk-0.1.4a2.tar.gz.

File metadata

  • Download URL: kitchenai_sdk-0.1.4a2.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.8 Linux/6.9.3-76060903-generic

File hashes

Hashes for kitchenai_sdk-0.1.4a2.tar.gz
Algorithm Hash digest
SHA256 1694e10ec6e3f87a24383e31455bd4bd15a2dafb878566d1a3bd17d809c0b7c3
MD5 33eb5958f1d3dff5c251ce2493f5556d
BLAKE2b-256 31fbdf004a4868dd0edf18618658fe9085e5cb111b5e84689d460c4a11106da7

See more details on using hashes here.

File details

Details for the file kitchenai_sdk-0.1.4a2-py3-none-any.whl.

File metadata

  • Download URL: kitchenai_sdk-0.1.4a2-py3-none-any.whl
  • Upload date:
  • Size: 3.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.8 Linux/6.9.3-76060903-generic

File hashes

Hashes for kitchenai_sdk-0.1.4a2-py3-none-any.whl
Algorithm Hash digest
SHA256 bbf29e33c57384b50707e8d3490c30a9a7436c40b0d0c84a04bfe86f107c6b47
MD5 efcda5dd758c7cd05a5689684641f291
BLAKE2b-256 80c1ac4a4b5995c359e7b9c9a3f626e1817a1e2c1cb5287d7c1206e6af19306c

See more details on using hashes here.

Supported by

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