MODEL = "gpt-4-turbo-2024-04-09"
class Order(BaseModel):
"""Represents an order with details such as order ID, customer name, product name, price, status, and delivery date."""
order_id: str = Field(..., description="The unique identifier of the order")
product_name: str = Field(..., description="The name of the product")
price: float = Field(..., description="The price of the product")
status: str = Field(..., description="The status of the order")
delivery_date: str = Field(..., description="The delivery date of the order")
# Placeholder functions for order processing
def get_order_details(order_id):
# Placeholder function to retrieve order details based on the order ID
return Order(
order_id=order_id,
product_name="Product X",
price=100.0,
status="Delivered",
delivery_date="2024-04-10",
)
def escalate_to_agent(order: Order, message: str):
# Placeholder function to escalate the order to a human agent
return f"Order {order.order_id} has been escalated to an agent with message: `{message}`"
def refund_order(order: Order):
# Placeholder function to process a refund for the order
return f"Order {order.order_id} has been refunded successfully."
def replace_order(order: Order):
# Placeholder function to replace the order with a new one
return f"Order {order.order_id} has been replaced with a new order."
class FunctionCallBase(BaseModel):
rationale: Optional[str] = Field(..., description="The reason for the action.")
image_description: Optional[str] = Field(
..., description="The detailed description of the package image."
)
action: Literal["escalate_to_agent", "replace_order", "refund_order"]
message: Optional[str] = Field(
...,
description="The message to be escalated to the agent if action is escalate_to_agent",
)
# Placeholder functions to process the action based on the order ID
def __call__(self, order_id):
order: Order = get_order_details(order_id=order_id)
if self.action == "escalate_to_agent":
return escalate_to_agent(order, self.message)
if self.action == "replace_order":
return replace_order(order)
if self.action == "refund_order":
return refund_order(order)
class EscalateToAgent(FunctionCallBase):
"""Escalate to an agent for further assistance."""
pass
class OrderActionBase(FunctionCallBase):
pass
class ReplaceOrder(OrderActionBase):
"""Tool call to replace an order."""
pass
class RefundOrder(OrderActionBase):
"""Tool call to refund an order."""
pass