Ten post to Część 1 z serii czteroczęściowej. Koniecznie sprawdź pozostałe posty w serii, aby dowiedzieć się więcej o naszym generatorze planów biznesowych zasilanym przez SI.
Część 1: Jak stworzyliśmy generator planów biznesowych zasilany przez SI, używając LangGraph & LangChain
Część 2: Jak zoptymalizowaliśmy generowanie planów biznesowych przez SI: kompromis między szybkością a jakością
Część 3: Jak stworzyliśmy 273 testy jednostkowe w 3 dni bez pisania ani jednej linii kodu
Część 4: Framework oceny SI — Jak zbudowaliśmy system do oceny i usprawniania planów biznesowych generowanych przez SI
Podczas budowy generatora planów biznesowych z wykorzystaniem SI, zaczęliśmy od podstaw, używając LangChain i LangGraph, ponieważ potrzebowaliśmy agencji Framework zdolnej do obsługi złożonych przepływów pracy. W przeciwieństwie do naszego poprzedniego projektu, Doradca biznesowy — agenta opartego na czacie, który korzystał z SDK OpenAI i przetwarzania opartego na potokach — ten nowy projekt wymagał ustrukturyzowanego, wieloetapowego przepływu pracy SI do dynamicznego generowania i doskonalenia planów biznesowych.
Nasz zespół produktowy określił podstawową funkcjonalność w następujący sposób:
- Użytkownicy przeszliby przez wywiad biznesowy gdzie odpowiadali na strukturalne pytania.
- Każda para pytanie-odpowiedź była przyporządkowana do konkretnych sekcji w planie biznesowym.
- Użytkownicy mogli później aktualizować odpowiedzi, co wywoływało regenerację dotkniętych sekcji.
- System był zaprojektowany do wspierania przyszłych agentów specyficznych dla domeny, takich jak specjaliści od modelowania finansowego czy badań rynkowych.
Biorąc pod uwagę rosnący trend wieloagentowych przepływów pracy SI w aplikacjach biznesowych, zbudowaliśmy nasz system z modułowych, skalowalnych komponentów SI, które mogą efektywnie współpracować, zapewniając dokładność, spójność i adaptowalność.
Dlaczego wybraliśmy LangChain & LangGraph
Budowanie złożonej aplikacji opartej na SI wymagało więcej niż tylko prostych zapytań LLM. Potrzebowaliśmy:
- Architektura niezależna od modelu: Możliwość przełączania się między modelami OpenAI, Claude, a nawet lokalnymi LLM bez znaczących przepisów.
- Wykonanie oparte na grafie: Sposób dynamicznego strukturyzowania przepływów pracy, unikając sztywnych łańcuchów.
- Pamięć ze stanem: Zdolność systemu do zachowania wyników pośrednich między etapami.
- Skalowalność: Elastyczność umożliwiająca dodanie w przyszłości bardziej specjalizowanych agentów AI.
LangChain i LangGraph zapewniały te możliwości poprzez skierowany graf acykliczny (DAG)-based przepływy pracy, umożliwiając skomplikowane interakcje między wieloma węzłami przetwarzania.
Chociaż nie zaimplementowaliśmy od razu agentów specyficznych dla domen, zaprojektowaliśmy system tak, aby wspierał przyszłe modele SI specjalizujące się w prognozach finansowych, zgodności prawnej lub analizie rynku, co zapewniało elastyczność frameworka.
Jednym z głównych trendów, który zidentyfikowaliśmy, było rosnące przyjęcie wieloagentowych przepływów pracy SI w złożonych aplikacjach biznesowych. Firmy takie jak LinkedIn i Uber z powodzeniem wdrożyły architektury oparte na agentach, aby poprawić operacje i podejmowanie decyzji. Inspirując się tym, zaprojektowaliśmy nasz system tak, aby wiele węzłów SI mogło współpracować dynamicznie, zapewniając, że każdy etap przetwarzania mógł być optymalizowany niezależnie, jednocześnie zachowując płynną integrację.
Implementacja Procesu AI
Podstawowa architektura składała się z:
- Odpowiedzi użytkowników z wywiadu przechowywane jako zorganizowane dane.
- Przepływ pracy zasilany przez LangGraph umożliwiający dynamiczne kierowanie zadań do odpowiednich węzłów AI.
- Hybrydowa strategia wyboru modelu, pozwalająca różnym zadaniom być obsługiwanym przez różne modele OpenAI (GPT-4o dla szczegółowych sekcji, GPT-4o-mini dla ogólnego projektowania).
- Hybrydowe podejście do generowania, gdzie niektóre sekcje były generowane indywidualnie dla dokładności, podczas gdy inne były przetwarzane w seriach dla efektywności.
Krok Po Kroku Rozkład Operacji
Nasz proces tworzenia planu biznesowego obejmował kilka kolejnych kroków:
- Węzeł Tworzenia Szkicu — Generuje wstępny szkic planu biznesowego na podstawie odpowiedzi użytkownika.
- Węzeł Oceny — Ocenia szkic, identyfikując luki i obszary do poprawy.
- Refinacja Po Ocenie — Dostosowuje szkic na podstawie informacji zwrotnej z oceny.
- Końcowa Generacja — Tworzy ostateczną wersję, zapewniając kompletność i spójność.
To wieloetapowe podejście zapewniło stopniowe udoskonalanie planu biznesowego, zamiast polegania na jednorazowym wygenerowaniu przez SI. Jednak z powodu ograniczeń wydajności, później uproszczyliśmy to do jednoetapowego procesu generowania ze względów użytkowych, o czym opowiemy w przyszłym artykule.
Przykład Przetwarzania Grafowego
graph TD;
A[Wywiad z użytkownikiem] --> B[Generacja Wersji Roboczej];
B --> C[Ocena];
C --> D[Dopracowanie po Ocenie];
D --> E[Ostateczny Plan Biznesowy];
Ta struktura ilustruje, jak zadania przepływają przez różne etapy, zapewniając modułowe i skalowalne wykonanie.
Przykład: Użycie Narzędzia Do Wywoływania Strukturalnego Generowania
Jedną z naszych kluczowych decyzji było wykorzystanie działania narzędzia w ścisłym trybie OpenAI. Umożliwiło to modelom SI interakcję ze strukturalnymi funkcjami i wymuszenie przewidywalnych, sformatowanych odpowiedzi, co zmniejszyło ilość błędnych wyobrażeń.
Przykład Wywołania Narzędzia: Generowanie Sekcji Planu Biznesowego
import { StructuredToolWithStrict } from 'langchain/tools';
import { z } from 'zod';
const sectionsSchema = z.object({ sections: z.array( z.object({ id: z.string().describe('Identyfikator sekcji'), slug: z.string().describe('Slug szablonu dla tej sekcji'), content: z.string().describe('Wygenerowana treść dla tej sekcji') }) ).describe('Seria sekcji planu biznesowego') }).strict(); export class GenerateBusinessPlanSections extends StructuredToolWithStrict { name = 'generate_sections'; description = 'Generowanie strukturalnych sekcji planu biznesowego na podstawie danych użytkownika.'; schema = sectionsSchema; async _call(input) { return { sections: input.sections }; // Treść generowana przez SI dostarczona jako argumenty narzędzia } }
Użycie Zod do walidacji schematu zapewniło, że odpowiedzi były zawsze poprawnie sformułowane i bezpieczne typowo, co zmniejszyło błędy parsowania i umożliwiło automatyczną walidację treści generowanych przez AI.
Wyzwania & Modyfikacje LangChain
Pomimo zalet LangChain i LangGraph, napotkaliśmy na liczne przeszkody, które wymagały niestandardowych modyfikacji:
- Ograniczenia LangChain → Brak ścisłego trybu dla wywoływania narzędzi i brak wsparcia dla strumieniowania wyników narzędzi. Rozszerzyliśmy wbudowane funkcje LangChain, aby wymusić bardziej rygorystyczne ograniczenia wyników i zmodyfikowaliśmy LangGraph, aby umożliwić przyrostowe strumieniowanie strukturalnych odpowiedzi.
- Słaba dokumentacja LangChain → Często musieliśmy czytać i analizować kod źródłowy LangChain z powodu niewystarczającej dokumentacji, co spowalniało implementację i utrudniało debugowanie.
- Problemy z jakością kodu → Niektóre obszary implementacji LangChain brakowało utrzymywalności, co wymagało od nas refaktoryzacji i optymalizacji kluczowych komponentów.
- Wąskie gardła wydajności przy użyciu API Asystentów OpenAI → Początkowo używaliśmy API Asystentów, ale stwierdziliśmy, że tworzenie wątków wprowadza znaczące opóźnienia, a dodatkowe nieustrukturyzowane wiadomości w wywołaniach narzędzi spowalniały czasy odpowiedzi. Ostatecznie przeszliśmy na Chat API dla strukturalnych odpowiedzi i poprawionej efektywności.
Aby sprostać tym wymaganiom, opracowaliśmy niestandardowy OpenAIAssistantRunnable, specjalistyczny komponent oparty na istniejącej implementacji LangChain, ale wzmocniony o wsparcie dla strumieniowania, ścisłych wywołań narzędzi i wieloetapowych przepływów pracy.
Ostateczna Korekta Architektury
Podczas gdy pierwotna architektura operacji pozostała nienaruszona, zminimalizowaliśmy liczbę kroków przetwarzania z wielokrotnych iteracji do jednokrokowego generowania aby poprawić szybkość i doświadczenia użytkownika w ostatecznej wersji.
Kluczowe Informacje
- LangChain + LangGraph były niezbędne ale wymagały głębokiej personalizacji do generowania strukturalnych odpowiedzi i wywoływania narzędzi.
- Hybrydowe podejścia generacyjne — mieszanie przetwarzania indywidualnego i wsadowego — pozwoliły nam na wyważenie dokładności i efektywności.
- Strukturalne odpowiedzi i weryfikacja schematu znacząco poprawiły jakość i niezawodność wyjścia AI.
- Wieloetapowe podejście do przetwarzania było początkowo stosowane, ale z powodu ograniczeń wydajności zaimplementowano uproszczoną generację jednoetapową.
- Optymalizacja prędkości wykonania AI poprzez przejście z API Asystentów do API Czatu drastycznie skróciła czas generacji, zachowując jednocześnie strukturalne odpowiedzi.
Wypróbuj Naszą Biznesową Suitę Napędzaną AI
Poznaj pełne możliwości naszych narzędzi biznesowych opartych na SI, zbudowanych i hostowanych na DreamHost. Od planowania biznesowego po generowanie treści, nasz zestaw narzędzi SI jest zaprojektowany, aby pomóc przedsiębiorcom i firmom usprawnić ich działania.
Klienci DreamHost mogą kliknąć tutaj, aby rozpocząć i zapoznać się z naszym generatorem planu biznesowego z obsługą SI i innymi narzędziami SI.
Ten post to Część 1 z 4-częściowej serii. Upewnij się, że sprawdziłeś pozostałe posty w serii, aby dokładniej poznać nasz generator planów biznesowych zasilany SI.
Część 1: Jak zbudowaliśmy generator planów biznesowych zasilany SI, korzystając z LangGraph & LangChain
Część 2: Jak zoptymalizowaliśmy generowanie planów biznesowych SI: kompromis między szybkością a jakością
Część 3: Jak stworzyliśmy 273 testy jednostkowe w 3 dni, nie pisząc ani jednej linii kodu
Część 4: Ramka oceny SI — Jak zbudowaliśmy system oceniający i ulepszający plany biznesowe generowane przez SI