diff --git a/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx b/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx new file mode 100644 index 000000000..207ae2d48 --- /dev/null +++ b/src/frontend/src/modals/apiModal/utils/get-python-api-code.tsx @@ -0,0 +1,58 @@ +/** + * Function to get the python code for the API + * @param {string} flowId - The id of the flow + * @param {boolean} isAuth - If the API is authenticated + * @param {any[]} tweak - The tweaks + * @returns {string} - The python code + */ +export default function getPythonApiCode( + flowId: string, + isAuth: boolean, + tweaksBuildedObject, + ): string { + const tweaksObject = tweaksBuildedObject[0]; + return `import requests + from typing import Optional + + BASE_API_URL = "${window.location.protocol}//${window.location.host}/api/v1/run" + FLOW_ID = "${flowId}" + # You can tweak the flow by adding a tweaks dictionary + # e.g {"OpenAI-XXXXX": {"model_name": "gpt-4"}} + TWEAKS = ${JSON.stringify(tweaksObject, null, 2)} + + def run_flow(message: str, + flow_id: str, + output_type: str = "chat", + input_type: str = "chat", + tweaks: Optional[dict] = None, + api_key: Optional[str] = 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 = { + "input_value": message, + "output_type": output_type, + "input_type": input_type, + } + headers = None + if tweaks: + payload["tweaks"] = tweaks + if api_key: + headers = {"x-api-key": api_key} + response = requests.post(api_url, json=payload, headers=headers) + return response.json() + + # Setup any tweaks you want to apply to the flow + message = "message" + ${!isAuth ? `api_key = ""` : ""} + print(run_flow(message=message, flow_id=FLOW_ID, tweaks=TWEAKS${ + !isAuth ? `, api_key=api_key` : "" + }))`; + } \ No newline at end of file diff --git a/src/frontend/src/modals/apiModal/views/index.tsx b/src/frontend/src/modals/apiModal/views/index.tsx index a5cc47721..5165949ea 100644 --- a/src/frontend/src/modals/apiModal/views/index.tsx +++ b/src/frontend/src/modals/apiModal/views/index.tsx @@ -15,7 +15,6 @@ import { uniqueTweakType } from "../../../types/components"; import { FlowType } from "../../../types/flow/index"; import { getCurlCode, - getPythonApiCode, getPythonCode, getWidgetCode, tabsArray, @@ -27,6 +26,7 @@ import { checkCanBuildTweakObject } from "../utils/check-can-build-tweak-object" import { getChangesType } from "../utils/get-changes-types"; import { getNodesWithDefaultValue } from "../utils/get-nodes-with-default-value"; import { getValue } from "../utils/get-value"; +import getPythonApiCode from "../utils/get-python-api-code"; const ApiModal = forwardRef( ( diff --git a/src/frontend/src/utils/utils.ts b/src/frontend/src/utils/utils.ts index 6868113fa..276585b18 100644 --- a/src/frontend/src/utils/utils.ts +++ b/src/frontend/src/utils/utils.ts @@ -113,11 +113,6 @@ export function getRandomKeyByssmm(): string { return seconds + milliseconds + Math.abs(Math.floor(Math.random() * 10001)); } -export function varHighlightHTML({ name }: IVarHighlightType): string { - const html = `{${name}}`; - return html; -} - export function buildTweakObject(tweak: tweakType) { tweak.forEach((el) => { Object.keys(el).forEach((key) => { @@ -146,65 +141,6 @@ export function getChatInputField(flowState?: FlowState) { return chat_input_field; } -/** - * Function to get the python code for the API - * @param {string} flowId - The id of the flow - * @param {boolean} isAuth - If the API is authenticated - * @param {any[]} tweak - The tweaks - * @returns {string} - The python code - */ -export function getPythonApiCode( - flowId: string, - isAuth: boolean, - tweaksBuildedObject, -): string { - const tweaksObject = tweaksBuildedObject[0]; - return `import requests -from typing import Optional - -BASE_API_URL = "${window.location.protocol}//${window.location.host}/api/v1/run" -FLOW_ID = "${flowId}" -# You can tweak the flow by adding a tweaks dictionary -# e.g {"OpenAI-XXXXX": {"model_name": "gpt-4"}} -TWEAKS = ${JSON.stringify(tweaksObject, null, 2)} - -def run_flow(message: str, - flow_id: str, - output_type: str = "chat", - input_type: str = "chat", - tweaks: Optional[dict] = None, - api_key: Optional[str] = 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 = { - "input_value": message, - "output_type": output_type, - "input_type": input_type, - } - headers = None - if tweaks: - payload["tweaks"] = tweaks - if api_key: - headers = {"x-api-key": api_key} - response = requests.post(api_url, json=payload, headers=headers) - return response.json() - -# Setup any tweaks you want to apply to the flow -message = "message" -${!isAuth ? `api_key = ""` : ""} -print(run_flow(message=message, flow_id=FLOW_ID, tweaks=TWEAKS${ - !isAuth ? `, api_key=api_key` : "" - }))`; -} - /** * Function to get the curl code for the API * @param {string} flowId - The id of the flow