from flowise import Flowise, PredictionData
def test_non_streaming():
client = Flowise()
# Test de predicción sin streaming
completion = client.create_prediction(
PredictionData(
chatflowId="<chatflow-id>",
question="¿Cuál es la capital de Francia?",
streaming=False
)
)
# Procesar e imprimir la respuesta
for response in completion:
print("Respuesta sin streaming:", response)
def test_streaming():
client = Flowise()
# Test de predicción con streaming
completion = client.create_prediction(
PredictionData(
chatflowId="<chatflow-id>",
question="¡Cuéntame un chiste!",
streaming=True
)
)
# Procesar e imprimir cada fragmento del stream
print("Respuesta con streaming:")
for chunk in completion:
print(chunk)
if __name__ == "__main__":
# Ejecutar test sin streaming
test_non_streaming()
# Ejecutar test con streaming
test_streaming()
import { FlowiseClient } from 'flowise-sdk'
async function test_streaming() {
const client = new FlowiseClient({ baseUrl: 'http://localhost:3000' });
try {
// Para predicción con streaming
const prediction = await client.createPrediction({
chatflowId: 'fe1145fa-1b2b-45b7-b2ba-bcc5aaeb5ffd',
question: '¿Cuál es el ingreso de Apple?',
streaming: true,
});
for await (const chunk of prediction) {
console.log(chunk);
}
} catch (error) {
console.error('Error:', error);
}
}
async function test_non_streaming() {
const client = new FlowiseClient({ baseUrl: 'http://localhost:3000' });
try {
// Para predicción sin streaming
const prediction = await client.createPrediction({
chatflowId: 'fe1145fa-1b2b-45b7-b2ba-bcc5aaeb5ffd',
question: '¿Cuál es el ingreso de Apple?',
});
console.log(prediction);
} catch (error) {
console.error('Error:', error);
}
}
// Ejecutar test sin streaming
test_non_streaming()
// Ejecutar test con streaming
test_streaming()
Override Config
Sobrescribe la configuración de entrada existente del chatflow con la propiedad overrideConfig.
Por razones de seguridad, la sobrescritura de configuración está deshabilitada por defecto. El usuario debe habilitarla yendo a Chatflow Configuration -> pestaña Security. Luego seleccionar la propiedad que puede ser sobrescrita.
Puedes pasar un sessionId para persistir el estado de la conversación, de modo que cada llamada API posterior tendrá contexto sobre la conversación anterior. De lo contrario, se generará una nueva sesión cada vez.
Si el flujo contiene Document Loaders con la funcionalidad de carga de archivo, la API se ve ligeramente diferente. En lugar de pasar el cuerpo como JSON, form data se utiliza. Esto te permite enviar archivos a la API. If the flow contains Document Loaders with Upload File functionality, the API looks slightly different. Instead of passing body as JSON, form data is being used. This allows you to send files to the API.
Make sure the sent file type is compatible with the expected file type from document loader. For example, if a PDF File Loader is being used, you should only send .pdf files.
To avoid having separate loaders for different file types, we recommend to use File Loader
import requests
API_URL = "http://localhost:3000/api/v1/vector/upsert/<chatflowId>"
# use form data to upload files
form_data = {
"files": ('state_of_the_union.txt', open('state_of_the_union.txt', 'rb'))
}
body_data = {
"returnSourceDocuments": True
}
def query(form_data):
response = requests.post(API_URL, files=form_data, data=body_data)
print(response)
return response.json()
output = query(form_data)
print(output)
// use FormData to upload files
let formData = new FormData();
formData.append("files", input.files[0]);
formData.append("returnSourceDocuments", true);
async function query(formData) {
const response = await fetch(
"http://localhost:3000/api/v1/vector/upsert/<chatflowId>",
{
method: "POST",
body: formData
}
);
const result = await response.json();
return result;
}
query(formData).then((response) => {
console.log(response);
});
Document Loaders without Upload
For other Document Loaders nodes without Upload File functionality, the API body is in JSON format similar to Prediction API.