mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-26 08:38:15 +00:00
Squashed 'packages/tools/' content from commit 78317b9c
git-subtree-dir: packages/tools git-subtree-split: 78317b9c127f18bd040c1d77e3c0840cdc9a5b38
This commit is contained in:
58
crewai_tools/tools/contextualai_create_agent_tool/README.md
Normal file
58
crewai_tools/tools/contextualai_create_agent_tool/README.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# ContextualAICreateAgentTool
|
||||
|
||||
## Description
|
||||
This tool is designed to integrate Contextual AI's enterprise-grade RAG agents with CrewAI. This tool enables you to create a new Contextual RAG agent. It uploads your documents to create a datastore and returns the Contextual agent ID and datastore ID.
|
||||
|
||||
## Installation
|
||||
To incorporate this tool into your project, follow the installation instructions below:
|
||||
|
||||
```
|
||||
pip install 'crewai[tools]' contextual-client
|
||||
```
|
||||
|
||||
**Note**: You'll need a Contextual AI API key. Sign up at [app.contextual.ai](https://app.contextual.ai) to get your free API key.
|
||||
|
||||
## Example
|
||||
|
||||
```python
|
||||
from crewai_tools import ContextualAICreateAgentTool
|
||||
|
||||
# Initialize the tool
|
||||
tool = ContextualAICreateAgentTool(api_key="your_api_key_here")
|
||||
|
||||
# Create agent with documents
|
||||
result = tool._run(
|
||||
agent_name="Financial Analysis Agent",
|
||||
agent_description="Agent for analyzing financial documents",
|
||||
datastore_name="Financial Reports",
|
||||
document_paths=["/path/to/report1.pdf", "/path/to/report2.pdf"],
|
||||
)
|
||||
print(result)
|
||||
```
|
||||
|
||||
## Parameters
|
||||
- `api_key`: Your Contextual AI API key
|
||||
- `agent_name`: Name for the new agent
|
||||
- `agent_description`: Description of the agent's purpose
|
||||
- `datastore_name`: Name for the document datastore
|
||||
- `document_paths`: List of file paths to upload
|
||||
|
||||
Example result:
|
||||
|
||||
```
|
||||
Successfully created agent 'Research Analyst' with ID: {created_agent_ID} and datastore ID: {created_datastore_ID}. Uploaded 5 documents.
|
||||
```
|
||||
|
||||
You can use `ContextualAIQueryTool` with the returned IDs to query the knowledge base and retrieve relevant information from your documents.
|
||||
|
||||
## Key Features
|
||||
- **Complete Pipeline Setup**: Creates datastore, uploads documents, and configures agent in one operation
|
||||
- **Document Processing**: Leverages Contextual AI's powerful parser to ingest complex PDFs and documents
|
||||
- **Vector Storage**: Use Contextual AI's datastore for large document collections
|
||||
|
||||
## Use Cases
|
||||
- Set up new RAG agents from scratch with complete automation
|
||||
- Upload and organize document collections into structured datastores
|
||||
- Create specialized domain agents for legal, financial, technical, or research workflows
|
||||
|
||||
For more detailed information about Contextual AI's capabilities, visit the [official documentation](https://docs.contextual.ai).
|
||||
@@ -0,0 +1,71 @@
|
||||
from typing import Any, Optional, Type, List
|
||||
from crewai.tools import BaseTool
|
||||
from pydantic import BaseModel, Field
|
||||
import os
|
||||
|
||||
|
||||
class ContextualAICreateAgentSchema(BaseModel):
|
||||
"""Schema for contextual create agent tool."""
|
||||
agent_name: str = Field(..., description="Name for the new agent")
|
||||
agent_description: str = Field(..., description="Description for the new agent")
|
||||
datastore_name: str = Field(..., description="Name for the new datastore")
|
||||
document_paths: List[str] = Field(..., description="List of file paths to upload")
|
||||
|
||||
|
||||
class ContextualAICreateAgentTool(BaseTool):
|
||||
"""Tool to create Contextual AI RAG agents with documents."""
|
||||
|
||||
name: str = "Contextual AI Create Agent Tool"
|
||||
description: str = "Create a new Contextual AI RAG agent with documents and datastore"
|
||||
args_schema: Type[BaseModel] = ContextualAICreateAgentSchema
|
||||
|
||||
api_key: str
|
||||
contextual_client: Any = None
|
||||
package_dependencies: List[str] = ["contextual-client"]
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
try:
|
||||
from contextual import ContextualAI
|
||||
self.contextual_client = ContextualAI(api_key=self.api_key)
|
||||
except ImportError:
|
||||
raise ImportError(
|
||||
"contextual-client package is required. Install it with: pip install contextual-client"
|
||||
)
|
||||
|
||||
def _run(
|
||||
self,
|
||||
agent_name: str,
|
||||
agent_description: str,
|
||||
datastore_name: str,
|
||||
document_paths: List[str]
|
||||
) -> str:
|
||||
"""Create a complete RAG pipeline with documents."""
|
||||
try:
|
||||
import os
|
||||
|
||||
# Create datastore
|
||||
datastore = self.contextual_client.datastores.create(name=datastore_name)
|
||||
datastore_id = datastore.id
|
||||
|
||||
# Upload documents
|
||||
document_ids = []
|
||||
for doc_path in document_paths:
|
||||
if not os.path.exists(doc_path):
|
||||
raise FileNotFoundError(f"Document not found: {doc_path}")
|
||||
|
||||
with open(doc_path, 'rb') as f:
|
||||
ingestion_result = self.contextual_client.datastores.documents.ingest(datastore_id, file=f)
|
||||
document_ids.append(ingestion_result.id)
|
||||
|
||||
# Create agent
|
||||
agent = self.contextual_client.agents.create(
|
||||
name=agent_name,
|
||||
description=agent_description,
|
||||
datastore_ids=[datastore_id]
|
||||
)
|
||||
|
||||
return f"Successfully created agent '{agent_name}' with ID: {agent.id} and datastore ID: {datastore_id}. Uploaded {len(document_ids)} documents."
|
||||
|
||||
except Exception as e:
|
||||
return f"Failed to create agent with documents: {str(e)}"
|
||||
Reference in New Issue
Block a user