Skip to main content

Module client

Module client 

Source
Expand description

WorkflowClient — wraps SimpleAgentsClient and adds workflow run, stream, resume.

Because simple-agents-core cannot depend on simple-agents-workflow (that would create a circular dependency), the workflow methods live here instead of on SimpleAgentsClient.

§Usage

use simple_agents_workflow::{WorkflowClient, WorkflowRunOptions, DefaultEventPrinter};
use simple_agents_core::SimpleAgentsClient;
use simple_agent_type::prelude::*;
use async_trait::async_trait;
use std::sync::Arc;

struct MyProvider;

#[async_trait]
impl Provider for MyProvider {
    fn name(&self) -> &str { "mock" }
    fn transform_request(&self, _req: &CompletionRequest) -> Result<ProviderRequest> {
        Ok(ProviderRequest::new("http://example.com"))
    }
    async fn execute(&self, _req: ProviderRequest) -> Result<ProviderResponse> {
        Ok(ProviderResponse::new(200, serde_json::json!({})))
    }
    fn transform_response(&self, _resp: ProviderResponse) -> Result<CompletionResponse> {
        unimplemented!()
    }
}

let client = WorkflowClient::from_client(
    SimpleAgentsClient::new(Arc::new(MyProvider)),
);

let messages = vec![Message::user("Hello")];

// Run a workflow
let output = client.run("workflow.yaml", messages.clone(), WorkflowRunOptions::default()).await?;

// Stream a workflow
let output = client.stream("workflow.yaml", messages, &DefaultEventPrinter, WorkflowRunOptions::default()).await?;

Structs§

RunOptions
Execution options for a workflow run.
WorkflowClient
A client that wraps SimpleAgentsClient and exposes workflow operations.

Enums§

WorkflowError
Error type for workflow operations.