1.11.6 • Published 4 months ago

@aigne/example-workflow-concurrency v1.11.6

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Workflow Concurrency Demo

This is a demonstration of using AIGNE Framework to build a concurrency workflow. The example now supports both one-shot and interactive chat modes, along with customizable model settings and pipeline input/output.

flowchart LR
in(In)
out(Out)
featureExtractor(Feature Extractor)
audienceAnalyzer(Audience Analyzer)
aggregator(Aggregator)

in --> featureExtractor --> aggregator
in --> audienceAnalyzer --> aggregator
aggregator --> out

classDef inputOutput fill:#f9f0ed,stroke:#debbae,stroke-width:2px,color:#b35b39,font-weight:bolder;
classDef processing fill:#F0F4EB,stroke:#C2D7A7,stroke-width:2px,color:#6B8F3C,font-weight:bolder;

class in inputOutput
class out inputOutput
class featureExtractor processing
class audienceAnalyzer processing
class aggregator processing

Prerequisites

  • Node.js and npm installed on your machine
  • An OpenAI API key for interacting with OpenAI's services
  • Optional dependencies (if running the example from source code):
    • Bun for running unit tests & examples
    • Pnpm for package management

Quick Start (No Installation Required)

export OPENAI_API_KEY=YOUR_OPENAI_API_KEY # Set your OpenAI API key

# Run in one-shot mode (default)
npx -y @aigne/example-workflow-concurrency

# Run in interactive chat mode
npx -y @aigne/example-workflow-concurrency --chat

# Use pipeline input
echo "Analyze product: Smart home assistant with voice control and AI learning capabilities" | npx -y @aigne/example-workflow-concurrency

Installation

Clone the Repository

git clone https://github.com/AIGNE-io/aigne-framework

Install Dependencies

cd aigne-framework/examples/workflow-concurrency

pnpm install

Setup Environment Variables

Setup your OpenAI API key in the .env.local file:

OPENAI_API_KEY="" # Set your OpenAI API key here

Run the Example

pnpm start # Run in one-shot mode (default)

# Run in interactive chat mode
pnpm start -- --chat

# Use pipeline input
echo "Analyze product: Smart home assistant with voice control and AI learning capabilities" | pnpm start

Run Options

The example supports the following command-line parameters:

ParameterDescriptionDefault
--chatRun in interactive chat modeDisabled (one-shot mode)
--model <provider[:model]>AI model to use in format 'provider:model' where model is optional. Examples: 'openai' or 'openai:gpt-4o-mini'openai
--temperature <value>Temperature for model generationProvider default
--top-p <value>Top-p sampling valueProvider default
--presence-penalty <value>Presence penalty valueProvider default
--frequency-penalty <value>Frequency penalty valueProvider default
--log-level <level>Set logging level (ERROR, WARN, INFO, DEBUG, TRACE)INFO
--input, -i <input>Specify input directlyNone

Examples

# Run in chat mode (interactive)
pnpm start -- --chat

# Set logging level
pnpm start -- --log-level DEBUG

# Use pipeline input
echo "Analyze product: Smart home assistant with voice control and AI learning capabilities" | pnpm start

Example

The following example demonstrates how to build a concurrency workflow:

import assert from "node:assert";
import { AIAgent, AIGNE, TeamAgent, ProcessMode } from "@aigne/core";
import { OpenAIChatModel } from "@aigne/core/models/openai-chat-model.js";

const { OPENAI_API_KEY } = process.env;
assert(OPENAI_API_KEY, "Please set the OPENAI_API_KEY environment variable");

const model = new OpenAIChatModel({
  apiKey: OPENAI_API_KEY,
});

const featureExtractor = AIAgent.from({
  instructions: `\
You are a product analyst. Extract and summarize the key features of the product.

Product description:
{{product}}`,
  outputKey: "features",
});

const audienceAnalyzer = AIAgent.from({
  instructions: `\
You are a market researcher. Identify the target audience for the product.

Product description:
{{product}}`,
  outputKey: "audience",
});

const aigne = new AIGNE({ model });

// 创建一个 TeamAgent 来处理并行工作流
const teamAgent = TeamAgent.from({
  skills: [featureExtractor, audienceAnalyzer],
  mode: ProcessMode.parallel
});

const result = await aigne.invoke(teamAgent, {
  product: "AIGNE is a No-code Generative AI Apps Engine",
});

console.log(result);

// Output:
// {
//   features: "**Product Name:** AIGNE\n\n**Product Type:** No-code Generative AI Apps Engine\n\n...",
//   audience: "**Small to Medium Enterprises (SMEs)**: \n   - Businesses that may not have extensive IT resources or budget for app development but are looking to leverage AI to enhance their operations or customer engagement.\n\n...",
// }

License

This project is licensed under the MIT License.

1.11.6

4 months ago

1.11.5

4 months ago

1.11.4

4 months ago

1.11.3

4 months ago

1.11.2

4 months ago

1.11.1

4 months ago

1.11.0

4 months ago

1.10.1

4 months ago

1.10.0

5 months ago

1.9.2

5 months ago

1.9.1

5 months ago

1.9.0

5 months ago

1.8.0

5 months ago

1.7.0

6 months ago

1.6.2

6 months ago

1.6.1

6 months ago

1.5.0

6 months ago

1.4.0

6 months ago

1.3.0

6 months ago

1.2.1

6 months ago

1.2.0

7 months ago

1.1.0

7 months ago

1.1.0-beta.17

7 months ago

1.1.0-beta.16

7 months ago

1.1.0-beta.15

7 months ago

1.1.0-beta.14

7 months ago

1.1.0-beta.13

7 months ago

1.1.0-beta.12

7 months ago