This tool will be useful in scenarios akin to RAG, where someone wants to ask questions or request the production of a summary, for instance, about a bunch of documents related to a particular topic. Currently, to fulfill such requests, the LLM needs to first `list_documents`, then `get_document_by_id` for each document. We also implement a utility functions to return documents in Markdown and HTML, since the Drive API JSON is verbose and would waste too many tokens unnecessarily. Limitations: the Markdown/HTML utilities do not handle table of contents (which I think aren't really useful here), headers, footers, or footnotes. --- This PR deprecates `list_documents` and implements `search_documents`, apart from `search_and_retrieve_documents`). This configuration makes it easier for LLMs to understand when to call each tool. Both tools had their interfaces refactored to remove Google API-specific arguments that were confusing LLMs sometimes, such as "corpora" and "support_all_drives". It now accepts arguments that better relate to expected user requests. --------- Co-authored-by: Eric Gustin <eric@arcade.dev>
43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
class GoogleToolError(Exception):
|
|
"""Base exception for Google tool errors."""
|
|
|
|
def __init__(self, message: str, developer_message: str | None = None):
|
|
self.message = message
|
|
self.developer_message = developer_message
|
|
super().__init__(self.message)
|
|
|
|
def __str__(self) -> str:
|
|
base_message = self.message
|
|
if self.developer_message:
|
|
return f"{base_message} (Developer: {self.developer_message})"
|
|
return base_message
|
|
|
|
|
|
class GoogleServiceError(GoogleToolError):
|
|
"""Raised when there's an error building or using the Google service."""
|
|
|
|
pass
|
|
|
|
|
|
class GmailToolError(GoogleToolError):
|
|
"""Raised when there's an error in the Gmail tools."""
|
|
|
|
pass
|
|
|
|
|
|
class GoogleCalendarToolError(GoogleToolError):
|
|
"""Raised when there's an error in the Google Calendar tools."""
|
|
|
|
pass
|
|
|
|
|
|
class GoogleDriveToolError(GoogleToolError):
|
|
"""Raised when there's an error in the Google Drive tools."""
|
|
|
|
pass
|
|
|
|
|
|
class GoogleDocsToolError(GoogleToolError):
|
|
"""Raised when there's an error in the Google Docs tools."""
|
|
|
|
pass
|