Skip to main content

A client for interacting with endpoints of the FutureHouse service.

Project description

FutureHouse Platform API Documentation

Documentation and tutorials for crow-client, a client for interacting with endpoints of the FutureHouse crow service.

FutureHouse's mascot is the crow. Therefore, some objects are named after the crow as a homage.

Installation

uv pip install crow-client

Quickstart

from crow_client import CrowClient, JobNames
from pathlib import Path
from aviary.core import DummyEnv
import ldp

client = CrowClient(
    stage=Stage.PROD,
    auth_type=AuthType.API_KEY,
    api_key="your_api_key",
)

job_data = {
    "name": JobNames.CROW,
    "query": "Has anyone tested therapeutic exerkines in humans or NHPs?",
}

job_run_id = client.create_job(job_data)

job_status = client.get_job(job_run_id)

A quickstart example can be found in the crow_client_notebook.ipynb file, where we show how to submit and retrieve a job task, pass runtime configuration to the agent, and ask follow-up questions to the previous job.

Functionalities

Crow-client implements a RestClient (called CrowClient) with the following functionalities:

To create a CrowClient, you need to pass the following parameters:

Parameter Type Default Description
stage Stage Stage.DEV Where the job will be submitted?
organization str | None None Which organization to use?
auth_type AuthType AuthType.API_KEY Which authentication method to use?
api_key str | None None The API key to use for authentication, if using auth_type=AuthType.API_KEY.

To instantiate a Client, we can use the following code:

from crow_client import CrowClient
from crow_client.models import Stage, AuthType

client = CrowClient(
    stage=Stage.PROD,
    organization="your_organization",
    auth_type=AuthType.API_KEY,
    api_key="your_api_key",
)

Stages

The stage is where your job will be submitted. This parameter can be one of the following:

Name Description
Stage.DEV Development environment at https://dev.api.platform.futurehouse.org
Stage.PROD Production environment at https://api.platform.futurehouse.org

Authentication

In order to use the CrowClient, you need to authenticate yourself. Authentication is done by providing an API key, which can be obtained directly from your profile page in the FutureHouse platform.

Job submission

CrowClient can be used to submit jobs to the FutureHouse platform. Using a CrowClient instance, you can submit jobs to the platform by calling the create_job method, which receives a JobRequest (or a dictionary with kwargs) and returns the job id. Aiming to make the submission of jobs as simple as possible, we have created a JobNames enum that contains the available job types.

The available supported jobs are:

Alias Job Name Task type Description
JobNames.CROW job-futurehouse-paperqa2 Fast Search Ask a question of scientific data sources, and receive a high-accuracy, cited response. Built with PaperQA2.
JobNames.FALCON job-futurehouse-paperqa2-deep Deep Search Use a plethora of sources to deeply research. Receive a detailed, structured report as a response.
JobNames.OWL job-futurehouse-hasanyone Precedent Search Formerly known as HasAnyone, query if anyone has ever done something in science.
JobNames.DUMMY job-futurehouse-dummy Dummy Task This is a dummy task. Mainly for testing purposes.

Using JobNames, the client automatically adapts the job name to the current stage. The job submission looks like this:

from crow_client import CrowClient, JobNames
from crow_client.models import AuthType, Stage

client = CrowClient(
    stage=Stage.PROD,
    auth_type=AuthType.API_KEY,
    api_key="your_api_key",
)

job_data = {
    "name": JobNames.CROW,
    "query": "Has anyone tested therapeutic exerkines in humans or NHPs?",
}

job_id = client.create_job(job_data)

JobRequest has the following fields:

Field Type Description
id UUID Optional job identifier. A UUID will be generated if not provided
name str Name of the job to execute eg. job-futurehouse-paperqa2, or using the JobNames for convenience: JobNames.CROW
query str Query or task to be executed by the job
runtime_config RuntimeConfig Optional runtime parameters for the job

runtime_config can receive a AgentConfig object with the desired kwargs. Check the available AgentConfig fields in the LDP documentation. Besides the AgentConfig object, we can also pass timeout and max_steps to limit the execution time and the number of steps the agent can take. Other especialised configurations are also available but are outside the scope of this documentation.

Job Continuation

Once a job is submitted and the answer is returned, FutureHouse platform allow you to ask follow-up questions to the previous job. It is also possible through the platform API. To accomplish that, we can use the runtime_config we discussed in the Job submission section.

from crow_client import CrowClient, JobNames
from crow_client.models import AuthType, Stage

client = CrowClient(
    stage=Stage.PROD,
    auth_type=AuthType.API_KEY,
    api_key="your_api_key",
)

job_data = {"name": JobNames.CROW, "query": "How many species of birds are there?"}

job_id = client.create_job(job_data)

continued_job_data = {
    "name": JobNames.CROW,
    "query": "From the previous answer, specifically,how many species of crows are there?",
    "runtime_config": {"continued_job_id": job_id},
}

continued_job_id = client.create_job(continued_job_data)

Job retrieval

Once a job is submitted, you can retrieve it by calling the get_job method, which receives a job id and returns a JobResponse object.

from crow_client import CrowClient
from crow_client.models import AuthType

client = CrowClient(
    auth_type=AuthType.API_KEY,
    api_key="your_api_key",
)

job_id = "job_id"

job_status = client.get_job(job_id)

job_status contains information about the job. For instance, its status, task, environment_name and agent_name, and other fields specific to the job.

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

futurehouse_client-0.0.4.tar.gz (134.3 kB view details)

Uploaded Source

Built Distribution

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

futurehouse_client-0.0.4-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file futurehouse_client-0.0.4.tar.gz.

File metadata

  • Download URL: futurehouse_client-0.0.4.tar.gz
  • Upload date:
  • Size: 134.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.3

File hashes

Hashes for futurehouse_client-0.0.4.tar.gz
Algorithm Hash digest
SHA256 e9121f736f286d38b1ae15f73eb03ea643e56f7b569ba6aaad7dc4f9a18ce922
MD5 291e6a431b6056d8e2ca5c8a58d43166
BLAKE2b-256 cc7fbd45c16e1da2bfce6689c77dc04b090280c18b82061136bc43fe0ee119be

See more details on using hashes here.

File details

Details for the file futurehouse_client-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for futurehouse_client-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1a8dc9c08420c0490a259c9ec59b2853cc1b12b8ec420f8abb630d211f0c4e85
MD5 1417ff8aeccd7815cc1f3f3f40180e30
BLAKE2b-256 0d43dcd5a521e32a652c3376b7a0577ab894ff26d897f2d93c1818575ed96e8c

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