🐛 fix(endpoints.py): change predict_flow function signature to include flow_id and session dependencies

 feat(endpoints.py): add flow_id parameter to predict_flow function to allow for running a flow by ID
The predict_flow function now includes a flow_id parameter and a session dependency to allow for running a flow by ID. The flow object is retrieved from the session using the flow_id parameter. If the flow is not found, a ValueError is raised.

🔨 refactor(constants.tsx): change API_URL constant to BASE_API_URL and add flow_id parameter to run_flow function
The API_URL constant has been renamed to BASE_API_URL to better reflect its purpose. The run_flow function now includes a flow_id parameter to allow for running a flow by ID. The flow_id parameter is used to construct the API URL.
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-06-14 07:21:25 -03:00
commit 7817c64591
2 changed files with 24 additions and 15 deletions

View file

@ -38,16 +38,20 @@ def get_all():
return build_langchain_types_dict()
@router.post("/predict", response_model=PredictResponse)
@router.post("/predict/{flow_id}", response_model=PredictResponse)
async def predict_flow(
predict_request: PredictRequest,
flow: Flow = Depends(get_flow_from_token),
flow_id: str,
session: Session = Depends(get_session),
):
"""
Endpoint to process a message using the flow passed in the bearer token.
"""
try:
flow = session.get(Flow, flow_id)
if flow is None:
raise ValueError(f"Flow {flow_id} not found")
graph_data = flow.data
if predict_request.tweaks:
graph_data = process_tweaks(graph_data, predict_request.tweaks)

View file

@ -52,28 +52,33 @@ export const TEXT_DIALOG_SUBTITLE = "Edit you text.";
export const getPythonApiCode = (flowId: string): string => {
return `import requests
FLOW_ID = "${flowId}"
API_URL = f"${window.location.protocol}//${window.location.host}/predict"
BASE_API_URL = "${window.location.protocol}//${window.location.host}/predict"
def run_flow(message, tweaks=None):
def run_flow(message: str, flow_id: str, tweaks: dict = None) -> dict:
"""
Run a flow with a given message and optional tweaks.
:param message: The message to send to the flow
:param flow_id: The ID of the flow to run
:param tweaks: Optional tweaks to customize the flow
:return: The JSON response from the flow
"""
api_url = f"{BASE_API_URL}/{flow_id}"
payload = {"message": message}
if tweaks:
payload = {'message': message, 'tweaks': tweaks}
else:
payload = {'message': message}
payload["tweaks"] = tweaks
headers = {'Authorization':
f'Bearer {FLOW_ID}',
'Content-Type': 'application/json'
}
response = requests.post(API_URL, json=payload)
response = requests.post(api_url, json=payload)
return response.json()
# Setup any tweaks you want to apply to the flow
tweaks = {} # {"nodeId": {"key": "value"}, "nodeId2": {"key": "value"}}
print(run_flow("Your message", tweaks=tweaks))`;
FLOW_ID = "${flowId}"
print(run_flow("Your message", flow_id=FLOW_ID, tweaks=tweaks))`;
};
/**