Skip to main content

linkup-monitor: a monitoring solution for world's best search for AI apps

Project description

LinkUp Monitor

A monitoring solution for world's best search for AI apps.

linkup-monitor is a python package aimed at providing a monitoring solution for Linkup, a web searching tool that allows you to scrape LLM-friendly answers from the web. linkup-monitor exploits PostgreSQL as a backend database and monitors queries, execution times, success status, search type and output type, allowing for a broad control over search analytics.

Installation and usage

linkup-monitor can be installed using pip in the following way:

pip install linkup-monitor
# or, for a faster installation
uv pip install linkup-monitor

And is available as in your python script:

  • You can initialize it:
from linkup_monitor.postgres_client import PostgresClient
from linkup_monitor.monitor import LinkupClient, MonitoredLinkupClient
import os

pg_client = PostgresClient(host='localhost', port=5432, user='postgres', password = 'admin', database = 'postgres') # replace with your Postgres configuration
linkup_client = LinkupClient(api_key=os.getenv('LINKUP_API_KEY')) # assuming you exported LINKUP_API_KEY as an environment variable
monitored_client = MonitoredLinkupClient(linkup_client = linkup_client, postgres_client = pg_client)
  • Synchronously search the web:
from linkup_monitor.monitor import SearchInput


data = SearchInput(
    query = "Who won the Nobel Prize for Chemistry in 2023?",
    output_type = "searchResults",
    output_schema = None,
    depth = "deep",
)
response = monitored_client.search(data = data)
print(response)
  • Asynchronously search the web:
from linkup_monitor.monitor import SearchInput
import asyncio

async def main():
    data = SearchInput(
        query = "What were Microsoft revenue and operating income in USD in the fiscal year 2022?",
        output_type = "structured",
        output_schema = "{\"properties\": {\"company\": {\"description\": \"Company name\",\"type\": \"string\"},\"fiscalYear\": {\"description\": \"The fiscal year for the reported data\",\"type\": \"string\"},\"operatingIncome\": {\"description\": \"Microsoft's operating income in USD\",\"type\": \"number\"},\"revenue\": {\"description\": \"Microsoft's revenue in USD\",\"type\": \"number\"}},\"type\": \"object\"}",
        depth = "deep",
    )
    response = await monitored_client.asearch(data = data)
    print(response)

if __name__ == "__main__":
    asyncio.run(main())
  • Get the monitoring data:
from linkup_monitor.monitor import SelectDatabaseData
# get raw data without filtering them
output_data = monitored_client.get_data(return_mode="raw")
print(output_data)
# get data in JSON format, save them to a JSON file and filter them by status code, ordering them by ascending timestamp and limiting the returned values to 100
filter_data = SelectDatabaseData(
    created_at = False,
    status_code = 200, # you can also set it to 500, which identifies failed searches
    output_type = None,
    query = None,
    search_type = None,
    limit = 100
)
output_data = monitored_client.get_data(data=filter_data, return_mode="json", save_to_file=True)
print(output_data)
# get data in pd.DataFrame format and save them as a CSV file and filter them by output type, ordering them by descending timestamp
filter_data = SelectDatabaseData(
    created_at = True,
    status_code = None, # you can also set it to 500, which identifies failed searches
    output_type = "sourcedAnswer",
    query = None,
    search_type = None,
    limit = None,
)
output_data = monitored_client.get_data(data=filter_data, return_mode="pandas", save_to_file=True)
print(output_data)

You can find a complete reference for the package in REFERENCE.md

Contributing

Contributions are always welcome!

Find contribution guidelines at CONTRIBUTING.md

License and Funding

This project is open-source and is provided under an MIT License.

If you found it useful, please consider funding it.

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

linkup_monitor-0.0.1.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

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

linkup_monitor-0.0.1-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file linkup_monitor-0.0.1.tar.gz.

File metadata

  • Download URL: linkup_monitor-0.0.1.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for linkup_monitor-0.0.1.tar.gz
Algorithm Hash digest
SHA256 1432b71f57357ea34ce85b39a6c3b638ae33f22a64faa152b4ccf87869c420db
MD5 1a52a35b59caed5787dd90eee3bbf4c8
BLAKE2b-256 0e7a39f734831f5fc2b3850441a3a812ee5fadb06c537618ce2fa33d3c63db78

See more details on using hashes here.

File details

Details for the file linkup_monitor-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for linkup_monitor-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 76fa2b71ad182f4f8157bd6748df7e6f9ef559699e0aa4450e2311fe4d0b42b9
MD5 23a62252bc1bf16fee6a239d2849124c
BLAKE2b-256 63e84d593f0bd4a01eaa1e483e3d7761fc3a5dd57ae8c79cb21e00683b0278a8

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