Demistyfikacja wykonywania kodu: Code Interpreter a Azure Functions
By Mirko Peters ·
Witamy ponownie w blogu podcastowym! Jeśli kiedykolwiek przyszło Ci stanąć na technologicznym rozdrożu i zastanawiać się, jaki jest absolutnie najlepszy sposób, aby wykonać sn…
Automatically translated with AI from the original post. Read the English original
Witamy ponownie na blogu podcastu! Jeśli kiedykolwiek stanąłeś na technologicznym rozdrożu i zastanawiałeś się, jaki jest najlepszy sposób na uruchomienie fragmentu kodu, wykonanie obciążenia bezserwerowego czy automatyzację procesu biznesowego, z pewnością nie jesteś w tym sam. Nowoczesny ekosystem chmury daje ogromne możliwości, ale wraz z nimi pojawia się oszałamiająca liczba wyborów. Dwa narzędzia, które często pojawiają się w dyskusjach o szybkiej automatyzacji, przepływach pracy AI i obliczeniach w chmurze, to Code Interpreter w Copilot Studio oraz Azure Functions. Na pierwszy rzut oka oba pozwalają wykonywać kod bez zarządzania bazową infrastrukturą, ale pod spodem są zbudowane dla zupełnie różnych zastosowań.
W tym wpisie omówimy zasadnicze różnice między tymi dwoma rozwiązaniami. Przeanalizujemy ich podstawową funkcjonalność, przyjrzymy się rzeczywistym przypadkom użycia, zestawimy je ze sobą w starciu wydajności, ocenimy opłacalność kosztową oraz dokładnie przyjrzymy się skalowalności i łatwości użycia. Niezależnie od tego, czy jesteś obywatelskim deweloperem, który dopiero zaczyna pracę z językiem Python, czy architektem przedsiębiorstwa projektującym odporną architekturę sterowaną zdarzeniami, ten przewodnik pomoże Ci wybrać właściwe narzędzie do kolejnego projektu. Jeśli chcesz zgłębić ten temat w formie audio, koniecznie sprawdź powiązany odcinek: Copilot Studio Code Interpreter vs Azure Functions.
Funkcjonalność: Code Interpreter a Azure Functions
Przegląd Code Interpreter
Code Interpreter jest wygodnym narzędziem do uruchamiania skryptów Python w środowisku Copilot Studio. Pozwala szybko wykonywać kod bez długiej konfiguracji. Funkcja ta jest szczególnie przydatna dla analityków i deweloperów, którzy potrzebują szybkiego testowania i prototypowania.
Kluczowe funkcje
- Szybkie wykonywanie: Możesz natychmiast uruchamiać skrypty Python, co czyni to narzędzie idealnym do zadań ad hoc.
- Zintegrowane środowisko: Code Interpreter działa w ramach Copilot Studio, zapewniając płynny dostęp do danych i narzędzi.
- Przyjazny interfejs: Interfejs został zaprojektowany z myślą o łatwości użycia, dzięki czemu możesz skupić się na kodzie, a nie na konfiguracji.
Ograniczenia
Choć Code Interpreter jest potężny przy szybkich zadaniach, ma pewne ograniczenia:
- Limit rozmiaru pliku: Nie możesz przekroczyć limitu rozmiaru pliku wynoszącego 512 MB, co może ograniczać większe projekty.
- Ścisłe limity czasu: Czas wykonania jest ograniczony, przez co narzędzie nie nadaje się do długotrwałych procesów.
- Brak wywołań zewnętrznych API: Nie możesz wywoływać zewnętrznych API, co ogranicza możliwości integracji.
Typowe przypadki użycia Code Interpretera obejmują:
- Analiza danych w finansach: Automatyzuje złożone zadania analizy danych, znacząco skracając czas przetwarzania trendów rynkowych.
- Translacja kodu w tworzeniu oprogramowania: Tłumaczy starsze bazy kodu na nowoczesne języki, na przykład konwertuje COBOL na Python.
- Przetwarzanie obrazów w ochronie zdrowia: Usprawnia analizę obrazów medycznych dzięki automatyzacji.
- Autonomiczne przepływy pracy w produkcji: Ułatwia bezpieczne wzorce wywoływania narzędzi, zwiększając wydajność produkcji.
Przegląd Azure Functions
Azure Functions to platforma obliczeniowa bezserwerowa, która pozwala uruchamiać kod na żądanie. Narzędzie to zostało zaprojektowane dla deweloperów, którzy chcą budować skalowalne aplikacje bez zarządzania infrastrukturą serwerową. Zapewnia solidne środowisko do wykonywania złożonych obciążeń.
Kluczowe funkcje
- Architektura bezserwerowa: Możesz uruchamiać kod bez martwienia się o zarządzanie serwerami, dzięki czemu skupiasz się na tworzeniu oprogramowania.
- Automatyczne skalowanie: Azure Functions skaluje się automatycznie w zależności od zapotrzebowania, zapewniając optymalną wydajność w okresach szczytowego obciążenia.
- Możliwości integracji: Możesz łatwo integrować się z różnymi API i usługami, co rozszerza funkcjonalność Twoich aplikacji.
Ograniczenia
Azure Functions oferuje wiele zalet, ale wiąże się też z pewnymi kwestiami do rozważenia:
- Złożona konfiguracja: Wstępna konfiguracja może wymagać więcej czasu i wiedzy specjalistycznej niż w przypadku Code Interpretera.
- Zarządzanie kosztami: Choć może to być opłacalne, musisz monitorować wykorzystanie, aby uniknąć nieoczekiwanych opłat.
Typowe przypadki użycia Azure Functions obejmują:
- Przypomnienia i powiadomienia: Automatyzacja alertów i przypomnień dla użytkowników.
- Zaplanowane zadania i wiadomości: Uruchamianie zadań w określonych odstępach czasu.
- Przetwarzanie plików: Obsługa przesyłanych plików i ich przetwarzanie w czasie rzeczywistym.
- Przetwarzanie danych: Zarządzanie strumieniami danych i wykonywanie obliczeń w tle.
Przypadki użycia Code Interpreter i Azure Functions
Kiedy używać Code Interpreter
Idealne scenariusze
Warto rozważyć Code Interpreter, gdy potrzebujesz szybko wykonać zadania lub eksperymenty. To narzędzie sprawdza się tam, gdzie kluczowe są szybkość i prostota. Oto idealne scenariusze:
- Szybkie prototypowanie: Możesz szybko przetestować pomysły bez rozbudowanej konfiguracji.
- Analiza danych ad hoc: Jeśli potrzebujesz analizować dane na bieżąco, Code Interpreter zapewnia proste rozwiązanie.
- Nauka i eksperymentowanie: Początkujący mogą używać go do ćwiczenia programowania w Pythonie bez złożoności pełnego środowiska deweloperskiego.
Zastosowania
Code Interpreter nadaje się do różnych zastosowań, w tym:
- Analiza danych: Możesz wykonywać lekkie zadania analityczne, takie jak generowanie raportów wizualnych czy przekształcanie zbiorów danych.
- Szybkie obliczenia: Użyj go do prostych obliczeń lub manipulacji danymi, które nie wymagają dużej mocy obliczeniowej.
- Testowanie skryptów: Testuj małe skrypty lub funkcje przed włączeniem ich do większych projektów.
Kiedy używać Azure Functions
Idealne scenariusze
Azure Functions sprawdza się w scenariuszach wymagających skalowalności i integracji. Wybierz to narzędzie, gdy twoje projekty wymagają solidnych rozwiązań. Rozważ następujące idealne scenariusze:
- Aplikacje dla przedsiębiorstw: Jeśli tworzysz aplikacje obsługujące znaczne obciążenia, Azure Functions będzie właściwym wyborem.
- Architektura sterowana zdarzeniami: Używaj tego rozwiązania w aplikacjach reagujących na zdarzenia, takie jak przesyłanie plików czy zmiany w bazie danych.
- Zaplanowane zadania: Jeśli potrzebujesz uruchamiać zadania w określonych odstępach czasu, Azure Functions może efektywnie zautomatyzować te procesy.
Zastosowania
Azure Functions obsługuje szeroki zakres zastosowań, w tym:
- Potoki przetwarzania danych: Możesz zarządzać strumieniami danych i wykonywać złożone obliczenia w czasie rzeczywistym.
- Interfejsy API w sieci Web: Twórz bezserwerowe interfejsy API, które obsługują żądania i odpowiedzi bez zarządzania serwerami.
- Zadania w tle: Automatyzuj zadania w tle, takie jak wysyłanie powiadomień czy przetwarzanie plików, bez udziału użytkownika.
Dzięki zrozumieniu tych przypadków użycia możesz świadomie wybrać narzędzie najlepiej dopasowane do twoich potrzeb. Niezależnie od tego, czy potrzebujesz szybkiego wykonania z Code Interpreter, czy skalowalnych rozwiązań z Azure Functions, każde z tych narzędzi oferuje unikalne zalety dostosowane do różnych scenariuszy.
Analiza wydajności Code Interpreter i Azure Functions
Wydajność Code Interpreter
Czas wykonania
Code Interpreter wyróżnia się szybkością wykonywania małych zadań. Szybkie wyniki można uzyskać, uruchamiając proste skrypty w Pythonie. To narzędzie zostało zaprojektowane z myślą o szybkim testowaniu i prototypowaniu. Może jednak mieć trudności z większymi zbiorami danych lub złożonymi obliczeniami ze względu na swoje ograniczenia.
Zużycie zasobów
Zużycie zasobów w Code Interpreter jest minimalne. Działa w środowisku Copilot Studio, co oznacza, że nie wymaga dużych zasobów. Dzięki temu nadaje się do lekkich zadań. Jeśli jednak spróbujesz uruchomić większe skrypty, możesz napotkać wąskie gardła wydajnościowe.
Wydajność Azure Functions
Czas wykonania
Azure Functions zapewnia solidniejszą wydajność przy złożonych obciążeniach. Może obsługiwać wiele żądań jednocześnie, co czyni go idealnym rozwiązaniem w scenariuszach o dużej współbieżności. Czas wykonania może się różnić w zależności od obciążenia i ustawień konfiguracji. Na przykład odpowiednie ustawienia mogą znacząco poprawić wydajność.
Zużycie zasobów
Azure Functions zarządza zasobami dynamicznie. Automatycznie skaluje się w zależności od zapotrzebowania, co pomaga optymalizować zużycie zasobów. Oto krótki przegląd tego, jak Azure Functions obsługuje obciążenia o dużej współbieżności:
| Ustawienie | Opis | Wpływ |
|---|---|---|
| FUNCTIONS_WORKER_PROCESS_COUNT | Konfiguruje liczbę procesów roboczych na instancję | Zwiększa zużycie procesora i pamięci |
| PSWorkerInProcConcurrencyUpperBound | Konfiguruje liczbę runspaces w każdym procesie roboczym | Umożliwia jednoczesne uruchamianie wielu wywołań, co zwiększa zużycie zasobów |
| Automatyczne skalowanie | Automatycznie dodaje lub usuwa instancje na podstawie zdarzeń wyzwalających | Pomaga zarządzać obciążeniem i wykorzystaniem zasobów, ale może powodować opóźnienia przy zimnych startach |
Ponadto Azure Functions stosuje strategie ograniczające obciążenie i zwiększające wydajność:
- Durable Functions: Umożliwiają długotrwałe wykonywanie zadań bez blokowania zasobów.
- Randomized Request Times: Ta technika rozkłada żądania w czasie, aby uniknąć skoków obciążenia.
- Azure Queue Storage: Przetwarza żądania asynchronicznie, co zmniejsza potrzebę wysokiej współbieżności.
- Azure Event Grid: Zarządza dużą przepustowością i ponawia nieudane komunikaty, minimalizując potrzebę zarządzania współbieżnością.
- Batch Processing: Przetwarza wiele żądań jednocześnie, zmniejszając częstotliwość wywołań funkcji.
Znajomość tych wskaźników wydajności pomaga wybrać właściwe narzędzie do potrzeb. Jeśli potrzebujesz szybkiego wykonania małych zadań, Code Interpreter będzie dobrym wyborem. W przypadku większych, bardziej złożonych aplikacji Azure Functions zapewnia skalowalność i wydajność, których potrzebujesz.
Opłacalność Code Interpreter i Azure Functions
Cennik Code Interpreter
Czynniki kosztowe
Rozważając koszt Code Interpreter, należy wziąć pod uwagę kilka czynników. Ich zrozumienie pomaga oszacować całkowity koszt posiadania (TCO). Oto główne czynniki kosztowe:
| Czynnik kosztowy | Opis |
|---|---|
| Wzorce użycia | Sposób wykorzystania zasobów może znacząco wpływać na koszty. |
| Typy subskrypcji | Różne modele subskrypcji mogą prowadzić do odmiennych kosztów. |
| Ceny od dostawców zewnętrznych | Koszty usług zewnętrznych mogą zwiększać ogólne TCO. |
Pamiętaj też, że koszty pracy często mogą przewyższać koszty licencji w kalkulacjach TCO. Istotną rolę odgrywają także koszty sprzętu. Firmy często pomijają własne wydatki na ETL, co może prowadzić do niedoszacowania TCO.
Względy budżetowe
Dla małych firm Code Interpreter stanowi łatwiejszy punkt wejścia. Niższe początkowe koszty i krótszy czas tworzenia rozwiązania sprawiają, że jest atrakcyjny. Jednak wraz ze wzrostem potrzeb warto ocenić, czy cennik nadal odpowiada rosnącym wymaganiom.
Cennik Azure Functions
Czynniki kosztowe
Azure Functions działa w oparciu o odmienny model cenowy. Zazwyczaj obejmuje on opłaty zależne od użycia i hostingu, a także dodatkowe koszty godzinowe. Model ten może być korzystny dla firm, które potrzebują skalowalności. Oto kluczowe czynniki kosztowe do rozważenia:
| Usługa | Struktura cennika | Wymagane kompetencje techniczne | Przydatność dla przedsiębiorstw |
|---|---|---|---|
| Code Interpreter | Płatny cennik zależny od wielkości firmy i przypadku użycia | Umiarkowane | Odpowiedni dla przedsiębiorstw o umiarkowanych kompetencjach technicznych |
| Azure Functions | Opłaty zależne od użycia i hostingu wraz z dodatkowymi kosztami godzinowymi | Wysokie | Najlepszy wybór dla dużych przedsiębiorstw o wysokich wymaganiach bezpieczeństwa |
Względy budżetowe
Dla dużych przedsiębiorstw Azure Functions może wiązać się z wyższym kosztem początkowym. Jednak skalowalność i funkcje zabezpieczeń mogą uzasadniać tę inwestycję. Małe firmy mogą uznać koszty i wymagania kompetencyjne usług Azure za zbyt wysokie. Bardziej skorzystają na niższych początkowych kosztach i krótszym czasie wdrożenia Code Interpreter.
Skalowalność i integracja Azure Functions
Skalowalność Azure Functions
Azure Functions oferuje imponujące możliwości skalowania, które wyróżniają go spośród innych platform serverless. Możesz wybrać spośród różnych modeli hostingu dopasowanych do obciążenia. Oto kluczowe korzyści ze skalowalności Azure Functions:
- Dynamic Scaling: Azure Functions automatycznie dostosowuje zasoby do zapotrzebowania. Oznacza to, że płacisz wyłącznie za to, z czego korzystasz, co czyni to rozwiązanie opłacalnym.
- Multiple Hosting Options: Możesz wybrać spośród różnych modeli hostingu, z których każdy został zaprojektowany z myślą o określonych scenariuszach. Poniższa tabela przedstawia te opcje:
| Model hostingu | Opis |
|---|---|
| Consumption | Rozliczany za wykonanie, skaluje się do zera w stanie bezczynności, idealny dla nieprzewidywalnych obciążeń. |
| Premium | Instancje zawsze gotowe do pracy, eliminują zimne starty, automatycznie skalują się na żądanie. |
| Dedicated | Stała moc obliczeniowa, działa nieprzerwanie na określonej liczbie instancji, zapewniając przewidywalne rozliczenia. |
| Flex Consumption | Oferuje wiele stałych rozmiarów pamięci instancji, umożliwiając dopasowanie przydziału zasobów. |
| Oparte na kontenerach | Działa w usłudze Azure Container Apps, obsługuje Kubernetes, umożliwia skalowanie do zera oraz skalowanie oparte na zdarzeniach. |
Te funkcje pozwalają efektywnie obsługiwać zmienne obciążenia. Możesz zwiększać zasoby w godzinach szczytu i zmniejszać je, gdy zapotrzebowanie spada, co zapewnia optymalne wykorzystanie zasobów.
Zastosowania skalowalności
Azure Functions sprawdza się w kilku scenariuszach wymagających skalowalności:
- Aplikacje o dużym ruchu: Jeśli Twoja aplikacja doświadcza nagłych skoków ruchu, Azure Functions może automatycznie się skalować, aby obsłużyć zwiększone obciążenie.
- Procesy sterowane zdarzeniami: W przypadku aplikacji reagujących na zdarzenia, takie jak przesyłanie plików czy zmiany w bazie danych, Azure Functions może płynnie skalować się, aby obsłużyć wiele zdarzeń jednocześnie.
- Przetwarzanie wsadowe: Przy przetwarzaniu dużych wolumenów danych Azure Functions może skalować się poziomo, aby efektywnie obsłużyć obciążenie.
Możliwości integracji
Azure Functions płynnie integruje się z różnymi usługami Microsoft Azure oraz narzędziami firm trzecich. Ta integracja rozszerza funkcjonalność Twojej aplikacji i umożliwia tworzenie bardziej złożonych przepływów pracy. Oto podsumowanie korzyści płynących z integracji:
- Architektura sterowana zdarzeniami: Azure Functions może reagować na zdarzenia z innych usług Azure, umożliwiając automatyczne przetwarzanie bez ręcznej interwencji.
- Wsparcie dla wielu chmur: Azure Functions możesz wdrażać w środowisku wielochmurowym, co pozwala efektywnie zarządzać zasobami na różnych platformach.
- Opcje wdrożenia hybrydowego: Azure Functions może działać lokalnie, na brzegu sieci (edge) lub w innych chmurach dzięki klastrom połączonym z Azure Arc.
Poniższa tabela przedstawia wybrane narzędzia, które dobrze współpracują z Azure Functions:
| Typ narzędzia | Opis |
|---|---|
| Zdalny serwer MCP | Twórz własne serwery MCP lub hostuj serwery MCP oparte na zestawach SDK. |
| Narzędzie Azure Functions oparte na kolejce | Microsoft Foundry udostępnia specjalne narzędzie Azure Functions, które umożliwia asynchroniczne wywoływanie funkcji za pomocą kolejek komunikatów. |
Dzięki tym możliwościom integracji możesz budować solidne aplikacje, które reagują na różne wyzwalacze i zdarzenia, co podnosi jakość całego procesu tworzenia oprogramowania.
Łatwość użycia: Code Interpreter a Azure Functions
Doświadczenie użytkownika w Code Interpreter
Krzywa uczenia się
Code Interpreter ma łagodną krzywą uczenia się. Możesz zacząć z niego korzystać od razu, bez długiego szkolenia. Intuicyjny projekt pozwala skupić się na kodowaniu, a nie na konfiguracji. Wielu użytkownikom łatwo jest szybko opanować podstawy. Jeśli znasz trochę Pythona, będziesz się w nim czuć swobodnie.
Interfejs użytkownika
Interfejs Code Interpreter jest przejrzysty i prosty. Wszystkie niezbędne funkcje są łatwo dostępne. Układ ogranicza rozpraszacze, dzięki czemu możesz skupić się na kodzie. Oto najważniejsze elementy interfejsu:
- Prosta nawigacja: Możesz szybko przełączać się między różnymi sekcjami.
- Zintegrowane narzędzia: Dostęp do narzędzi do wizualizacji i analizy danych jest płynny.
- Informacja zwrotna w czasie rzeczywistym: Natychmiast otrzymujesz wyniki swojego kodu, co wzbogaca proces nauki.
Doświadczenie użytkownika w Azure Functions
Krzywa uczenia się
Azure Functions ma bardziej stromą krzywą uczenia się niż Code Interpreter. Może być konieczne poświęcenie czasu na zrozumienie architektury bezserwerowej i pojęć chmurowych. Gdy jednak opanujesz podstawy, docenisz jego moc i elastyczność. Microsoft udostępnia obszerną dokumentację i samouczki, które pomogą Ci na tej drodze.
Interfejs użytkownika
Interfejs Azure Functions jest bardziej złożony ze względu na zaawansowane funkcje. Choć na początku może wydawać się przytłaczający, z czasem staje się przejrzysty. Oto najważniejsze elementy interfejsu Azure Functions:
- Przegląd pulpitu: Pulpit zapewnia kompleksowy widok Twoich funkcji i ich wydajności.
- Opcje konfiguracji: Możesz dostosować ustawienia, aby zoptymalizować funkcje pod konkretne zadania.
- Narzędzia integracji: Interfejs pozwala łatwo łączyć się z różnymi usługami Azure i aplikacjami firm trzecich.
Podsumowując, Code Interpreter i Azure Functions służą różnym celom. Oto kluczowe różnice, które warto wziąć pod uwagę:
- Code Interpreter idealnie nadaje się do szybkich zadań. Oferuje natychmiastowe wykonanie bezpośrednio z interfejsu w usłudze Azure AI Foundry.
- Azure Functions obsługuje złożone automatyzacje. Możesz zintegrować tę usługę za pomocą zestawu SDK, aby wykonywać zadania, takie jak aktualizowanie rekordów CRM czy wysyłanie wiadomości e-mail.
Wybierając między nimi, zastanów się nad swoimi potrzebami. Jeśli do prostych zadań potrzebujesz szybkiego wykonania, wybierz Code Interpreter. W bardziej złożonych scenariuszach lepszym wyborem będzie Azure Functions. Oceń swoje konkretne wymagania, aby podjąć najlepszą decyzję dla swoich projektów.
Często zadawane pytania
Do czego służy Code Interpreter?
Code Interpreter umożliwia szybkie uruchamianie skryptów w Pythonie w ramach Copilot Studio. Możesz go używać do lekkiej analizy danych, tworzenia prototypów i testowania fragmentów kodu.
Czym Azure Functions różni się od Code Interpreter?
Azure Functions to platforma serverless przeznaczona do skalowalnych aplikacji. Obsługuje złożone obciążenia i integruje się z różnymi interfejsami API, podczas gdy Code Interpreter koncentruje się na szybkich, doraźnych zadaniach.
Czy mogę używać Azure Functions do analizy danych?
Tak, Azure Functions może automatyzować zadania analizy danych. Możesz tworzyć funkcje, które przetwarzają strumienie danych i wykonują obliczenia w czasie rzeczywistym, zwiększając możliwości analityczne.
Jakie korzyści daje użycie Microsoft Azure do przetwarzania w chmurze?
Microsoft Azure oferuje szeroki zakres usług przetwarzania w chmurze, w tym skalowalność, bezpieczeństwo i integrację z innymi produktami Microsoft. Obsługuje różne aplikacje, dzięki czemu jest wszechstronnym wyborem dla firm.
Czy Code Interpreter nadaje się dla początkujących?
Zdecydowanie tak! Code Interpreter ma przyjazny interfejs użytkownika i łagodną krzywą uczenia się. Jest idealny dla początkujących, którzy chcą ćwiczyć programowanie w Pythonie i wykonywać podstawową analizę danych.
Jak zintegrować Azure Functions z innymi usługami?
Azure Functions łatwo integruje się z różnymi usługami Microsoft Azure oraz narzędziami firm trzecich. Dzięki tej integracji możesz tworzyć złożone przepływy pracy i automatyzować procesy na różnych platformach.
Jakie typy aplikacji można tworzyć za pomocą Azure Functions?
Za pomocą Azure Functions możesz tworzyć interfejsy API sieci Web, zadania w tle oraz aplikacje sterowane zdarzeniami. Dzięki skalowalności doskonale nadaje się do obsługi dużego ruchu i złożonych zadań.
Jak działa model cenowy Azure Functions?
Azure Functions działa w modelu cenowym opartym na zużyciu i hostingu. Płacisz za zasoby, które zużywasz, dzięki czemu jest on opłacalny dla firm wymagających skalowalności.
Podsumowanie
Poruszanie się po krajobrazie chmury i low-code wymaga wyboru właściwego narzędzia do danego zadania. Code Interpreter w Copilot Studio nie ma sobie równych w szybkim prototypowaniu, doraźnych przekształceniach danych i testowaniu lekkich skryptów, natomiast Azure Functions to platforma klasy enterprise, stworzona do złożonych, sterowanych zdarzeniami i wysoce skalowalnych aplikacji serverless. Starannie oceniając wymagania projektu pod kątem szybkości wykonania, ograniczeń integracyjnych, budżetu i kompetencji technicznych, możesz z pewnością projektować rozwiązania, które efektywnie się skalują i przynoszą maksymalną wartość.
Aby posłuchać szerszej dyskusji na ten temat, z dodatkowymi spostrzeżeniami architektonicznymi i praktycznymi przykładami, koniecznie posłuchaj pełnego odcinka: Copilot Studio Code Interpreter vs Azure Functions. Dziękuję za lekturę i powodzenia w budowaniu!