mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 16:18:30 +00:00
updating deployment cli with
This commit is contained in:
@@ -27,6 +27,7 @@ When the `share_crew` feature is enabled, detailed data including task descripti
|
|||||||
| Yes | Test Execution Data | Includes: crew's randomly generated key and ID, number of iterations, model name used, quality score (float), execution time (in seconds). All non-personal. |
|
| Yes | Test Execution Data | Includes: crew's randomly generated key and ID, number of iterations, model name used, quality score (float), execution time (in seconds). All non-personal. |
|
||||||
| Yes | Task Lifecycle Data | Includes: creation and execution start/end times, crew and task identifiers. Stored as spans with timestamps. No personal data. |
|
| Yes | Task Lifecycle Data | Includes: creation and execution start/end times, crew and task identifiers. Stored as spans with timestamps. No personal data. |
|
||||||
| Yes | LLM Attributes | Includes: name, model_name, model, top_k, temperature, and class name of the LLM. All technical, non-personal data. |
|
| Yes | LLM Attributes | Includes: name, model_name, model, top_k, temperature, and class name of the LLM. All technical, non-personal data. |
|
||||||
|
| Yes | Crew Deployment attempt using crewAI CLI | Includes: The fact a deploy is being made and crew id, and if it's trying to pull logs, no other data. |
|
||||||
| No | Agent's Expanded Data | Includes: goal description, backstory text, i18n prompt file identifier. Users should ensure no personal info is included in text fields. |
|
| No | Agent's Expanded Data | Includes: goal description, backstory text, i18n prompt file identifier. Users should ensure no personal info is included in text fields. |
|
||||||
| No | Detailed Task Information | Includes: task description, expected output description, context references. Users should ensure no personal info is included in these fields. |
|
| No | Detailed Task Information | Includes: task description, expected output description, context references. Users should ensure no personal info is included in these fields. |
|
||||||
| No | Environment Information | Includes: platform, release, system, version, and CPU count. Example: 'Windows 10', 'x86_64'. No personal data. |
|
| No | Environment Information | Includes: platform, release, system, version, and CPU count. Example: 'Windows 10', 'x86_64'. No personal data. |
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ from typing import Any, Dict, List, Optional
|
|||||||
|
|
||||||
from rich.console import Console
|
from rich.console import Console
|
||||||
|
|
||||||
|
from crewai.telemetry import Telemetry
|
||||||
from .api import CrewAPI
|
from .api import CrewAPI
|
||||||
from .utils import (
|
from .utils import (
|
||||||
fetch_and_json_env_file,
|
fetch_and_json_env_file,
|
||||||
@@ -23,8 +24,13 @@ class DeployCommand:
|
|||||||
Initialize the DeployCommand with project name and API client.
|
Initialize the DeployCommand with project name and API client.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
|
self._telemetry = Telemetry()
|
||||||
|
self._telemetry.set_tracer()
|
||||||
access_token = get_auth_token()
|
access_token = get_auth_token()
|
||||||
except Exception:
|
except Exception:
|
||||||
|
self._deploy_signup_error_span = self._telemetry.deploy_signup_error_span(
|
||||||
|
self
|
||||||
|
)
|
||||||
console.print(
|
console.print(
|
||||||
"Please sign up/login to CrewAI+ before using the CLI.",
|
"Please sign up/login to CrewAI+ before using the CLI.",
|
||||||
style="bold red",
|
style="bold red",
|
||||||
@@ -90,6 +96,7 @@ class DeployCommand:
|
|||||||
Args:
|
Args:
|
||||||
uuid (Optional[str]): The UUID of the crew to deploy.
|
uuid (Optional[str]): The UUID of the crew to deploy.
|
||||||
"""
|
"""
|
||||||
|
self._start_deployment_span = self._telemetry.start_deployment_span(self, uuid)
|
||||||
console.print("Starting deployment...", style="bold blue")
|
console.print("Starting deployment...", style="bold blue")
|
||||||
if uuid:
|
if uuid:
|
||||||
response = self.client.deploy_by_uuid(uuid)
|
response = self.client.deploy_by_uuid(uuid)
|
||||||
@@ -109,6 +116,9 @@ class DeployCommand:
|
|||||||
"""
|
"""
|
||||||
Create a new crew deployment.
|
Create a new crew deployment.
|
||||||
"""
|
"""
|
||||||
|
self._create_crew_deployment_span = self._telemetry.create_crew_deployment_span(
|
||||||
|
self
|
||||||
|
)
|
||||||
console.print("Creating deployment...", style="bold blue")
|
console.print("Creating deployment...", style="bold blue")
|
||||||
env_vars = fetch_and_json_env_file()
|
env_vars = fetch_and_json_env_file()
|
||||||
remote_repo_url = get_git_remote_url()
|
remote_repo_url = get_git_remote_url()
|
||||||
@@ -247,6 +257,9 @@ class DeployCommand:
|
|||||||
uuid (Optional[str]): The UUID of the crew to get logs for.
|
uuid (Optional[str]): The UUID of the crew to get logs for.
|
||||||
log_type (str): The type of logs to retrieve (default: "deployment").
|
log_type (str): The type of logs to retrieve (default: "deployment").
|
||||||
"""
|
"""
|
||||||
|
self._get_crew_logs_span = self._telemetry.get_crew_logs_span(
|
||||||
|
self, uuid, log_type
|
||||||
|
)
|
||||||
console.print(f"Fetching {log_type} logs...", style="bold blue")
|
console.print(f"Fetching {log_type} logs...", style="bold blue")
|
||||||
|
|
||||||
if uuid:
|
if uuid:
|
||||||
@@ -269,6 +282,7 @@ class DeployCommand:
|
|||||||
Args:
|
Args:
|
||||||
uuid (Optional[str]): The UUID of the crew to remove.
|
uuid (Optional[str]): The UUID of the crew to remove.
|
||||||
"""
|
"""
|
||||||
|
self._remove_crew_span = self._telemetry.remove_crew_span(self, uuid)
|
||||||
console.print("Removing deployment...", style="bold blue")
|
console.print("Removing deployment...", style="bold blue")
|
||||||
|
|
||||||
if uuid:
|
if uuid:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import asyncio
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any, Optional
|
||||||
|
|
||||||
import pkg_resources
|
import pkg_resources
|
||||||
from opentelemetry import trace
|
from opentelemetry import trace
|
||||||
@@ -399,6 +399,63 @@ class Telemetry:
|
|||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def deploy_signup_error_span(self):
|
||||||
|
if self.ready:
|
||||||
|
try:
|
||||||
|
tracer = trace.get_tracer("crewai.telemetry")
|
||||||
|
span = tracer.start_span("Deploy Signup Error")
|
||||||
|
span.set_status(Status(StatusCode.OK))
|
||||||
|
span.end()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def start_deployment_span(self, uuid: Optional[str] = None):
|
||||||
|
if self.ready:
|
||||||
|
try:
|
||||||
|
tracer = trace.get_tracer("crewai.telemetry")
|
||||||
|
span = tracer.start_span("Start Deployment")
|
||||||
|
if uuid:
|
||||||
|
self._add_attribute(span, "uuid", uuid)
|
||||||
|
span.set_status(Status(StatusCode.OK))
|
||||||
|
span.end()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def create_crew_deployment_span(self):
|
||||||
|
if self.ready:
|
||||||
|
try:
|
||||||
|
tracer = trace.get_tracer("crewai.telemetry")
|
||||||
|
span = tracer.start_span("Create Crew Deployment")
|
||||||
|
span.set_status(Status(StatusCode.OK))
|
||||||
|
span.end()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_crew_logs_span(self, uuid: Optional[str], log_type: str = "deployment"):
|
||||||
|
if self.ready:
|
||||||
|
try:
|
||||||
|
tracer = trace.get_tracer("crewai.telemetry")
|
||||||
|
span = tracer.start_span("Get Crew Logs")
|
||||||
|
self._add_attribute(span, "log_type", log_type)
|
||||||
|
if uuid:
|
||||||
|
self._add_attribute(span, "uuid", uuid)
|
||||||
|
span.set_status(Status(StatusCode.OK))
|
||||||
|
span.end()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def remove_crew_span(self, uuid: Optional[str] = None):
|
||||||
|
if self.ready:
|
||||||
|
try:
|
||||||
|
tracer = trace.get_tracer("crewai.telemetry")
|
||||||
|
span = tracer.start_span("Remove Crew")
|
||||||
|
if uuid:
|
||||||
|
self._add_attribute(span, "uuid", uuid)
|
||||||
|
span.set_status(Status(StatusCode.OK))
|
||||||
|
span.end()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
def crew_execution_span(self, crew: Crew, inputs: dict[str, Any] | None):
|
def crew_execution_span(self, crew: Crew, inputs: dict[str, Any] | None):
|
||||||
"""Records the complete execution of a crew.
|
"""Records the complete execution of a crew.
|
||||||
This is only collected if the user has opted-in to share the crew.
|
This is only collected if the user has opted-in to share the crew.
|
||||||
|
|||||||
Reference in New Issue
Block a user