다음을 통해 공유


방법: 첫 번째 프로세스 만들기

경고

의미 체계 커널 프로세스 프레임워크 아직 개발 중이며 변경될 수 있습니다.

개요

의미 체계 커널 프로세스 프레임워크는 AI 통합 프로세스의 개발 및 실행을 간소화하도록 설계된 강력한 오케스트레이션 SDK입니다. 간단한 워크플로를 관리하든 복잡한 시스템을 관리하든 이 프레임워크를 사용하면 구조화된 방식으로 실행할 수 있는 일련의 단계를 정의하여 쉽고 유연하게 애플리케이션의 기능을 향상시킬 수 있습니다.

확장성을 위해 빌드된 프로세스 프레임워크는 순차적 실행, 병렬 처리, 팬인 및 팬아웃 구성, 심지어 지도 축소 전략과 같은 다양한 운영 패턴을 지원합니다. 이러한 적응성을 통해 다양한 실제 애플리케이션, 특히 지능형 의사 결정 및 다단계 워크플로가 필요한 애플리케이션에 적합합니다.

시작

의미 체계 커널 프로세스 프레임워크는 생각할 수 있는 거의 모든 비즈니스 프로세스에 AI를 주입하는 데 사용할 수 있습니다. 시작하기 위한 예시로서 새 제품에 대한 설명서를 생성하는 프로세스를 빌드해 보겠습니다.

시작하기 전에 필요한 의미 체계 커널 패키지가 설치되어 있는지 확인합니다.

// Install the Semantic Kernel Process Framework Local Runtime package
dotnet add package Microsoft.SemanticKernel.Process.LocalRuntime --version 1.46.0-alpha
// or
// Install the Semantic Kernel Process Framework Dapr Runtime package
dotnet add package Microsoft.SemanticKernel.Process.Runtime.Dapr --version 1.46.0-alpha

pip install semantic-kernel==1.20.0

설명 예제: 새 제품에 대한 설명서 생성

이 예제에서는 의미 체계 커널 프로세스 프레임워크를 활용하여 새 제품에 대한 설명서를 만들기 위한 자동화된 프로세스를 개발합니다. 이 프로세스는 더 현실적인 시나리오를 다루면서 간단하게 시작되고 발전할 것입니다.

먼저 매우 기본적인 흐름을 사용하여 설명서 프로세스를 모델링합니다.

  1. GatherProductInfoStep: 제품에 대한 정보를 수집합니다.
  2. GenerateDocumentationStep: 1단계에서 수집한 정보에서 설명서를 생성하도록 LLM에 요청합니다.
  3. PublishDocumentationStep: 설명서를 게시합니다.

첫 번째 프로세스의 흐름 다이어그램: A[기능 설명서 요청] --> B[LLM에 설명서 작성 요청] -> C[공개에 설명서 게시]

이제 프로세스를 이해했으므로 빌드해 보겠습니다.

프로세스 단계 정의

프로세스의 각 단계는 기본 단계 클래스에서 상속되는 클래스에 의해 정의됩니다. 이 프로세스에는 다음 세 단계가 있습니다.

using Microsoft.SemanticKernel.ChatCompletion;
using Microsoft.SemanticKernel;

// A process step to gather information about a product
public class GatherProductInfoStep: KernelProcessStep
{
    [KernelFunction]
    public string GatherProductInformation(string productName)
    {
        Console.WriteLine($"{nameof(GatherProductInfoStep)}:\n\tGathering product information for product named {productName}");

        // For example purposes we just return some fictional information.
        return
            """
            Product Description:
            GlowBrew is a revolutionary AI driven coffee machine with industry leading number of LEDs and programmable light shows. The machine is also capable of brewing coffee and has a built in grinder.

            Product Features:
            1. **Luminous Brew Technology**: Customize your morning ambiance with programmable LED lights that sync with your brewing process.
            2. **AI Taste Assistant**: Learns your taste preferences over time and suggests new brew combinations to explore.
            3. **Gourmet Aroma Diffusion**: Built-in aroma diffusers enhance your coffee's scent profile, energizing your senses before the first sip.

            Troubleshooting:
            - **Issue**: LED Lights Malfunctioning
                - **Solution**: Reset the lighting settings via the app. Ensure the LED connections inside the GlowBrew are secure. Perform a factory reset if necessary.
            """;
    }
}

// A process step to generate documentation for a product
public class GenerateDocumentationStep : KernelProcessStep<GeneratedDocumentationState>
{
    private GeneratedDocumentationState _state = new();

    private string systemPrompt =
            """
            Your job is to write high quality and engaging customer facing documentation for a new product from Contoso. You will be provide with information
            about the product in the form of internal documentation, specs, and troubleshooting guides and you must use this information and
            nothing else to generate the documentation. If suggestions are provided on the documentation you create, take the suggestions into account and
            rewrite the documentation. Make sure the product sounds amazing.
            """;

    // Called by the process runtime when the step instance is activated. Use this to load state that may be persisted from previous activations.
    override public ValueTask ActivateAsync(KernelProcessStepState<GeneratedDocumentationState> state)
    {
        this._state = state.State!;
        this._state.ChatHistory ??= new ChatHistory(systemPrompt);

        return base.ActivateAsync(state);
    }

    [KernelFunction]
    public async Task GenerateDocumentationAsync(Kernel kernel, KernelProcessStepContext context, string productInfo)
    {
        Console.WriteLine($"[{nameof(GenerateDocumentationStep)}]:\tGenerating documentation for provided productInfo...");

        // Add the new product info to the chat history
        this._state.ChatHistory!.AddUserMessage($"Product Info:\n{productInfo.Title} - {productInfo.Content}");

        // Get a response from the LLM
        IChatCompletionService chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();
        var generatedDocumentationResponse = await chatCompletionService.GetChatMessageContentAsync(this._state.ChatHistory!);

        DocumentInfo generatedContent = new()
        {
            Id = Guid.NewGuid().ToString(),
            Title = $"Generated document - {productInfo.Title}",
            Content = generatedDocumentationResponse.Content!,
        };

        this._state!.LastGeneratedDocument = generatedContent;

        await context.EmitEventAsync("DocumentationGenerated", generatedContent);
    }

    public class GeneratedDocumentationState
    {
        public DocumentInfo LastGeneratedDocument { get; set; } = new();
        public ChatHistory? ChatHistory { get; set; }
    }
}

// A process step to publish documentation
public class PublishDocumentationStep : KernelProcessStep
{
    [KernelFunction]
    public DocumentInfo PublishDocumentation(DocumentInfo document)
    {
        // For example purposes we just write the generated docs to the console
        Console.WriteLine($"[{nameof(PublishDocumentationStep)}]:\tPublishing product documentation approved by user: \n{document.Title}\n{document.Content}");
        return document;
    }
}

// Custom classes must be serializable
public class DocumentInfo
{
    public string Id { get; set; } = string.Empty;
    public string Title { get; set; } = string.Empty;
    public string Content { get; set; } = string.Empty;
}

위의 코드는 프로세스에 필요한 세 단계를 정의합니다. 여기에 몇 가지 사항을 설명합니다.

  • 의미 체계 커널에서 KernelFunction은 네이티브 코드나 LLM에 의해 호출될 수 있는 코드 블록을 정의합니다. 프로세스 프레임워크의 경우 KernelFunction단계의 호출할 수 없는 멤버이며 각 단계에는 하나 이상의 KernelFunction을 정의해야 합니다.
  • Process Framework에는 무상태 및 상태 저장 단계를 지원하는 기능이 있습니다. 상태가 있는 단계는 자동으로 진행률을 체크포인트하고 여러 호출 동안 상태를 유지합니다. GenerateDocumentationStepGeneratedDocumentationState 클래스를 사용하여 ChatHistoryLastGeneratedDocument 개체를 유지하는 예를 제공합니다.
  • 단계는 EmitEventAsync 개체에서 KernelProcessStepContext 호출하여 이벤트를 수동으로 내보낼 수 있습니다. KernelProcessStepContext 인스턴스를 얻으려면 KernelFunction에 매개 변수로 추가하면 프레임워크에서 자동으로 삽입됩니다.
import asyncio
from typing import ClassVar

from pydantic import BaseModel, Field

from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.chat_completion_client_base import ChatCompletionClientBase
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
from semantic_kernel.contents import ChatHistory
from semantic_kernel.functions import kernel_function
from semantic_kernel.processes import ProcessBuilder
from semantic_kernel.processes.kernel_process import KernelProcessStep, KernelProcessStepContext, KernelProcessStepState
from semantic_kernel.processes.local_runtime import KernelProcessEvent, start


# A process step to gather information about a product
class GatherProductInfoStep(KernelProcessStep):
    @kernel_function
    def gather_product_information(self, product_name: str) -> str:
        print(f"{GatherProductInfoStep.__name__}\n\t Gathering product information for Product Name: {product_name}")

        return """
Product Description:

GlowBrew is a revolutionary AI driven coffee machine with industry leading number of LEDs and 
programmable light shows. The machine is also capable of brewing coffee and has a built in grinder.

Product Features:
1. **Luminous Brew Technology**: Customize your morning ambiance with programmable LED lights that sync 
    with your brewing process.
2. **AI Taste Assistant**: Learns your taste preferences over time and suggests new brew combinations 
    to explore.
3. **Gourmet Aroma Diffusion**: Built-in aroma diffusers enhance your coffee's scent profile, energizing 
    your senses before the first sip.

Troubleshooting:
- **Issue**: LED Lights Malfunctioning
    - **Solution**: Reset the lighting settings via the app. Ensure the LED connections inside the 
        GlowBrew are secure. Perform a factory reset if necessary.
        """


# A sample step state model for the GenerateDocumentationStep
class GeneratedDocumentationState(BaseModel):
    """State for the GenerateDocumentationStep."""

    chat_history: ChatHistory | None = None


# A process step to generate documentation for a product
class GenerateDocumentationStep(KernelProcessStep[GeneratedDocumentationState]):
    state: GeneratedDocumentationState = Field(default_factory=GeneratedDocumentationState)

    system_prompt: ClassVar[str] = """
Your job is to write high quality and engaging customer facing documentation for a new product from Contoso. You will 
be provided with information about the product in the form of internal documentation, specs, and troubleshooting guides 
and you must use this information and nothing else to generate the documentation. If suggestions are provided on the 
documentation you create, take the suggestions into account and rewrite the documentation. Make sure the product 
sounds amazing.
"""

    async def activate(self, state: KernelProcessStepState[GeneratedDocumentationState]):
        self.state = state.state
        if self.state.chat_history is None:
            self.state.chat_history = ChatHistory(system_message=self.system_prompt)
        self.state.chat_history

    @kernel_function
    async def generate_documentation(
        self, context: KernelProcessStepContext, product_info: str, kernel: Kernel
    ) -> None:
        print(f"{GenerateDocumentationStep.__name__}\n\t Generating documentation for provided product_info...")

        self.state.chat_history.add_user_message(f"Product Information:\n{product_info}")

        chat_service, settings = kernel.select_ai_service(type=ChatCompletionClientBase)
        assert isinstance(chat_service, ChatCompletionClientBase)  # nosec

        response = await chat_service.get_chat_message_content(chat_history=self.state.chat_history, settings=settings)

        await context.emit_event(process_event="documentation_generated", data=str(response))


# A process step to publish documentation
class PublishDocumentationStep(KernelProcessStep):
    @kernel_function
    async def publish_documentation(self, docs: str) -> None:
        print(f"{PublishDocumentationStep.__name__}\n\t Publishing product documentation:\n\n{docs}")

위의 코드는 프로세스에 필요한 세 단계를 정의합니다. 여기에 몇 가지 사항을 설명합니다.

  • 의미 체계 커널에서 KernelFunction은 네이티브 코드나 LLM에 의해 호출될 수 있는 코드 블록을 정의합니다. 프로세스 프레임워크의 경우 KernelFunction단계의 호출할 수 없는 멤버이며 각 단계에는 하나 이상의 KernelFunction을 정의해야 합니다.
  • Process Framework에는 무상태 및 상태 저장 단계를 지원하는 기능이 있습니다. 상태가 있는 단계는 자동으로 진행률을 체크포인트하고 여러 호출 동안 상태를 유지합니다. GenerateDocumentationStep GeneratedDocumentationState 클래스를 사용하여 ChatHistory 개체를 유지하는 예제를 제공합니다.
  • 단계는 emit_event 개체에서 KernelProcessStepContext 호출하여 이벤트를 수동으로 내보낼 수 있습니다. KernelProcessStepContext 인스턴스를 얻으려면 KernelFunction에 매개 변수로 추가하면 프레임워크에서 자동으로 삽입됩니다.

프로세스 흐름 정의

// Create the process builder
ProcessBuilder processBuilder = new("DocumentationGeneration");

// Add the steps
var infoGatheringStep = processBuilder.AddStepFromType<GatherProductInfoStep>();
var docsGenerationStep = processBuilder.AddStepFromType<GenerateDocumentationStep>();
var docsPublishStep = processBuilder.AddStepFromType<PublishDocumentationStep>();

// Orchestrate the events
processBuilder
    .OnInputEvent("Start")
    .SendEventTo(new(infoGatheringStep));

infoGatheringStep
    .OnFunctionResult()
    .SendEventTo(new(docsGenerationStep));

docsGenerationStep
    .OnFunctionResult()
    .SendEventTo(new(docsPublishStep));

여기에 몇 가지 일이 있으므로 단계별로 세어 봅시다.

  1. 작성기 만들기: 프로세스는 작성기 패턴을 사용하여 모든 항목의 배선을 간소화합니다. 작성기에서는 프로세스 내의 단계를 관리하고 프로세스의 수명 주기를 관리하는 메서드를 제공합니다.

  2. 단계를 추가합니다. 단계는 작성기의 AddStepFromType 메서드를 호출하여 프로세스에 추가됩니다. 이를 통해 프로세스 프레임워크는 필요에 따라 인스턴스를 인스턴스화하여 단계의 수명 주기를 관리할 수 있습니다. 이 경우 프로세스에 세 단계를 추가하고 각각에 대한 변수를 만들었습니다. 이러한 변수는 이벤트의 오케스트레이션을 정의하기 위해 다음에 사용할 수 있는 각 단계의 고유한 인스턴스에 대한 핸들을 제공합니다.

  3. 이벤트 오케스트레이션: 단계별 이벤트 라우팅이 정의되는 위치입니다. 이 경우 다음과 같은 경로가 있습니다.

    • id = Start 있는 외부 이벤트가 프로세스로 전송되면 이 이벤트와 관련 데이터가 infoGatheringStep 단계로 전송됩니다.
    • infoGatheringStep 실행이 완료되면 반환된 개체를 docsGenerationStep 단계로 보냅니다.
    • 마지막으로 docsGenerationStep 실행이 완료되면 반환된 개체를 docsPublishStep 단계로 보냅니다.

프로세스 프레임워크의 이벤트 라우팅: 단계로 전송되는 이벤트가 단계 내에서 KernelFunctions로 라우팅되는 방식이 궁금할 수 있습니다. 위의 코드에서 각 단계는 단일 KernelFunction만 정의했으며 각 KernelFunction에는 단일 매개 변수만 있습니다(커널 및 단계 컨텍스트가 아닌 특수한 단계 컨텍스트는 나중에 자세히 설명). 생성된 설명서를 포함하는 이벤트가 docsPublishStep 전송되면 다른 선택이 없기 때문에 document 단계의 PublishDocumentation KernelFunction의 docsGenerationStep 매개 변수로 전달됩니다. 그러나 단계에는 여러 KernelFunctions가 있을 수 있으며 KernelFunctions에는 여러 매개 변수가 있을 수 있습니다. 이러한 고급 시나리오에서는 대상 함수 및 매개 변수를 지정해야 합니다.

# Create the process builder
process_builder = ProcessBuilder(name="DocumentationGeneration")

# Add the steps
info_gathering_step = process_builder.add_step(GatherProductInfoStep)
docs_generation_step = process_builder.add_step(GenerateDocumentationStep)
docs_publish_step = process_builder.add_step(PublishDocumentationStep)

# Orchestrate the events
process_builder.on_input_event("Start").send_event_to(target=info_gathering_step)

info_gathering_step.on_function_result().send_event_to(
    target=docs_generation_step, function_name="generate_documentation", parameter_name="product_info"
)

docs_generation_step.on_event("documentation_generated").send_event_to(target=docs_publish_step)

# Configure the kernel with an AI Service and connection details, if necessary
kernel = Kernel()
kernel.add_service(AzureChatCompletion())

# Build the process
kernel_process = process_builder.build()

여기에 몇 가지 일이 있으므로 단계별로 세어 봅시다.

  1. 작성기 만들기: 프로세스는 작성기 패턴을 사용하여 모든 항목의 배선을 간소화합니다. 작성기에서는 프로세스 내의 단계를 관리하고 프로세스의 수명 주기를 관리하는 메서드를 제공합니다.

  2. 단계 추가: 단계가 작성기의 메서드를 add_step 호출하여 프로세스에 추가됩니다. 그러면 단계 유형이 작성기에서 추가됩니다. 이를 통해 프로세스 프레임워크는 필요에 따라 인스턴스를 인스턴스화하여 단계의 수명 주기를 관리할 수 있습니다. 이 경우 프로세스에 세 단계를 추가하고 각각에 대한 변수를 만들었습니다. 이러한 변수는 이벤트의 오케스트레이션을 정의하기 위해 다음에 사용할 수 있는 각 단계의 고유한 인스턴스에 대한 핸들을 제공합니다.

  3. 이벤트 오케스트레이션: 단계별 이벤트 라우팅이 정의되는 위치입니다. 이 경우 다음과 같은 경로가 있습니다.

    • 외부 이벤트가 id = Start과 함께 프로세스로 전송되면, 이 이벤트와 관련 데이터는 info_gathering_step로 전송됩니다.
    • 실행이 info_gathering_step 완료되면 반환된 개체를 docs_generation_step에 보냅니다.
    • 마지막으로, docs_generation_step 실행이 완료되었을 때 반환된 개체를 docs_publish_step에 보냅니다.

프로세스 프레임워크의 이벤트 라우팅: 단계로 전송되는 이벤트가 단계 내에서 KernelFunctions로 라우팅되는 방식이 궁금할 수 있습니다. 위의 코드에서 각 단계는 단일 KernelFunction만 정의했으며 각 KernelFunction에는 단일 매개 변수만 있습니다(커널 및 단계 컨텍스트가 아닌 특수한 단계 컨텍스트는 나중에 자세히 설명). 생성된 설명서를 포함한 이벤트가 docs_publish_step에 전송되면 다른 선택 사항이 없기 때문에 docs의 KernelFunction의 publish_documentation 매개 변수로 docs_generation_step에 전달됩니다. 그러나 단계에는 여러 KernelFunctions가 있을 수 있으며 KernelFunctions에는 여러 매개 변수가 있을 수 있습니다. 이러한 고급 시나리오에서는 대상 함수 및 매개 변수를 지정해야 합니다.

프로세스 빌드 및 실행

// Configure the kernel with your LLM connection details
Kernel kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion("myDeployment", "myEndpoint", "myApiKey")
    .Build();

// Build and run the process
var process = processBuilder.Build();
await process.StartAsync(kernel, new KernelProcessEvent { Id = "Start", Data = "Contoso GlowBrew" });

프로세스를 빌드하고 StartAsync 호출하여 실행합니다. 이 프로세스는 Start라는 초기 외부 이벤트를 예상하고 있으므로 이를 제공합니다. 이 프로세스를 실행하면 콘솔에서 다음과 같은 출력이 표시됩니다.

GatherProductInfoStep: Gathering product information for product named Contoso GlowBrew
GenerateDocumentationStep: Generating documentation for provided productInfo
PublishDocumentationStep: Publishing product documentation:

# GlowBrew: Your Ultimate Coffee Experience Awaits!

Welcome to the world of GlowBrew, where coffee brewing meets remarkable technology! At Contoso, we believe that your morning ritual shouldn't just include the perfect cup of coffee but also a stunning visual experience that invigorates your senses. Our revolutionary AI-driven coffee machine is designed to transform your kitchen routine into a delightful ceremony.

## Unleash the Power of GlowBrew

### Key Features

- **Luminous Brew Technology**
  - Elevate your coffee experience with our cutting-edge programmable LED lighting. GlowBrew allows you to customize your morning ambiance, creating a symphony of colors that sync seamlessly with your brewing process. Whether you need a vibrant wake-up call or a soothing glow, you can set the mood for any moment!

- **AI Taste Assistant**
  - Your taste buds deserve the best! With the GlowBrew built-in AI taste assistant, the machine learns your unique preferences over time and curates personalized brew suggestions just for you. Expand your coffee horizons and explore delightful new combinations that fit your palate perfectly.

- **Gourmet Aroma Diffusion**
  - Awaken your senses even before that first sip! The GlowBrew comes equipped with gourmet aroma diffusers that enhance the scent profile of your coffee, diffusing rich aromas that fill your kitchen with the warm, inviting essence of freshly-brewed bliss.

### Not Just Coffee - An Experience

With GlowBrew, it's more than just making coffee-it's about creating an experience that invigorates the mind and pleases the senses. The glow of the lights, the aroma wafting through your space, and the exceptional taste meld into a delightful ritual that prepares you for whatever lies ahead.

## Troubleshooting Made Easy

While GlowBrew is designed to provide a seamless experience, we understand that technology can sometimes be tricky. If you encounter issues with the LED lights, we've got you covered:

- **LED Lights Malfunctioning?**
  - If your LED lights aren't working as expected, don't worry! Follow these steps to restore the glow:
    1. **Reset the Lighting Settings**: Use the GlowBrew app to reset the lighting settings.
    2. **Check Connections**: Ensure that the LED connections inside the GlowBrew are secure.
    3. **Factory Reset**: If you're still facing issues, perform a factory reset to rejuvenate your machine.

With GlowBrew, you not only brew the perfect coffee but do so with an ambiance that excites the senses. Your mornings will never be the same!

## Embrace the Future of Coffee

Join the growing community of GlowBrew enthusiasts today, and redefine how you experience coffee. With stunning visual effects, customized brewing suggestions, and aromatic enhancements, it's time to indulge in the delightful world of GlowBrew-where every cup is an adventure!

### Conclusion

Ready to embark on an extraordinary coffee journey? Discover the perfect blend of technology and flavor with Contoso's GlowBrew. Your coffee awaits!
# Configure the kernel with an AI Service and connection details, if necessary
kernel = Kernel()
kernel.add_service(AzureChatCompletion())

# Build the process
kernel_process = process_builder.build()

# Start the process
async with await start(
    process=kernel_process,
    kernel=kernel,
    initial_event=KernelProcessEvent(id="Start", data="Contoso GlowBrew"),
) as process_context:
    _ = await process_context.get_state()

프로세스를 빌드하고 비동기 컨텍스트 관리자를 호출 start 하여 실행합니다. 이 프로세스는 Start라는 초기 외부 이벤트를 예상하고 있으므로 이를 제공합니다. 이 프로세스를 실행하면 콘솔에서 다음과 같은 출력이 표시됩니다.

GatherProductInfoStep
         Gathering product information for Product Name: Contoso GlowBrew
GenerateDocumentationStep
         Generating documentation for provided product_info...
PublishDocumentationStep
         Publishing product documentation:

# GlowBrew AI-Driven Coffee Machine: Elevate Your Coffee Experience

Welcome to the future of coffee enjoyment with GlowBrew, the AI-driven coffee machine that not only crafts the perfect cup but does so with a light show that brightens your day. Designed for coffee enthusiasts and tech aficionados alike, GlowBrew combines cutting-edge brewing technology with an immersive lighting experience to start every day on a bright note.

## Unleash the Power of Luminous Brew Technology

With GlowBrew, your mornings will never be dull. The industry-leading number of programmable LEDs offers endless possibilities for customizing your coffee-making ritual. Sync the light show with the brewing process to create a visually stimulating ambiance that transforms your kitchen into a vibrant café each morning.

## Discover New Flavor Dimensions with the AI Taste Assistant

Leave the traditional coffee routines behind and say hello to personalization sophistication. The AI Taste Assistant learns and adapts to your unique preferences over time. Whether you prefer a strong espresso or a light latte, the assistant suggests new brew combinations tailored to your palate, inviting you to explore a world of flavors you never knew existed.

## Heighten Your Senses with Gourmet Aroma Diffusion

The moment you step into the room, let the GlowBrew’s built-in aroma diffusers captivate your senses. This feature is designed to enrich your coffee’s scent profile, ensuring every cup you brew is a multi-sensory delight. Let the burgeoning aroma energize you before the very first sip.

## Troubleshooting Guide: LED Lights Malfunctioning

Occasionally, you might encounter an issue with the LED lights not functioning as intended. Here’s how to resolve it efficiently:

- **Reset Lighting Settings**: Start by using the GlowBrew app to reset the lighting configurations to their default state.
- **Check Connections**: Ensure that all LED connections inside your GlowBrew machine are secure and properly connected.
- **Perform a Factory Reset**: If the problem persists, perform a factory reset on your GlowBrew to restore all settings to their original state.

Experience the art of coffee making like never before with the GlowBrew AI-driven coffee machine. From captivating light shows to aromatic sensations, every feature is engineered to enhance your daily brew. Brew, savor, and glow with GlowBrew.

다음 단계는 무엇인가요?

설명서 생성 프로세스의 첫 번째 초안이 작동하고 있지만, 아직 많이 부족합니다. 최소한 프로덕션 버전에는 다음이 필요합니다.

  • 생성된 설명서를 채점하고 품질 및 정확도 표준을 충족하는지 확인하는 증명 판독기 에이전트입니다.
  • 설명서가 사용자가 승인한 후에만 게시되는 승인 프로세스입니다(휴먼 인 더 루프).