workflows-ts icon indicating copy to clipboard operation
workflows-ts copied to clipboard

feat: vercel/ai binding

Open himself65 opened this issue 8 months ago • 2 comments

basic example:

import { createWorkflow, workflowEvent } from "@llama-flow/core";
import { mergeToWorkflow } from "@llama-flow/core/ai";
import { streamText } from "ai";
import { openai } from "@ai-sdk/openai";

const chatWorkflow = createWorkflow();

const startChatEvent = workflowEvent<string>();
const stopChatEvent = workflowEvent();

chatWorkflow.handle([startChatEvent], async () => {
  const result = streamText({
    model: openai("gpt-4.1"),
    prompt: "You are a helpful assistant.",
  });
  await mergeToWorkflow(result.fullStream);
  return stopChatEvent.with();
});

export { startChatEvent, stopChatEvent, chatWorkflow };
app.post("/chat", async (context) => {
  const { messages } = await context.req.json();
  const { stream, sendEvent } = chatWorkflow.createContext();
  sendEvent(startChatEvent.with(messages));
  return new Response(dataStream(stream));
});
// frontend
import { useChat } from 'ai/react'

useChat({
  api: '/chat'
})

himself65 avatar Apr 24 '25 15:04 himself65

Open in StackBlitz

npm i https://pkg.pr.new/run-llama/llama-flow/@llama-flow/core@76
npm i https://pkg.pr.new/run-llama/llama-flow/@llama-flow/llamaindex@76

commit: da20c69

pkg-pr-new[bot] avatar Apr 24 '25 15:04 pkg-pr-new[bot]

Deployed at https://llamaindex-ts-3ftacur2p.pr.staging.llamaindex.ai

github-actions[bot] avatar Apr 24 '25 15:04 github-actions[bot]