Fehler beim Ausführen des UiPath Python SDK erstellten Prozesses

Hallo zusammen, ich habe ein interessantes Problem, zu dem ich keine Informationen finden kann. Ich habe eine Automatisierung, die derzeit eine Kombination aus traditionellen Aktivitäten und den Python-Aktivitäten verwendet, um ein Skript auszuführen, das den Großteil der Arbeit erledigt. Da es sinnvoll ist, den gesamten Prozess in Python zu gestalten, habe ich mir die UiPath Python SDK angeschaut, um den Prozess zu erstellen, damit er über Orchestrator wie ein normaler Prozess aufgerufen werden kann.
Ich habe versucht, der (veralteten und unvollständigen) Dokumentation des UiPath Python SDK zu folgen und den Quellcode zu durchforsten, und ich konnte einen ganz einfachen Prozess veröffentlichen, der einfach das zurückgibt, was eingegeben wurde, mit etwas String-Verkettung.

Ich kann ihn lokal mit uipath run main <EINGABE> ausführen und ich habe ihn im Orchestrator veröffentlicht, aber ich kann den Prozess von Orchestrator aus nicht aufrufen. Ich habe ihn sowohl in meinen persönlichen Arbeitsbereichsordner als auch in einen separaten gemeinsam genutzten Ordner bereitgestellt, und ich erhalte die folgende Fehlermeldung, wenn ich versuche, ihn auszuführen: Serverless.Api.CreditsExceeded - Nicht genug Agentic Units, um die Automatisierung auszuführen. Bitte kontaktieren Sie Ihren Administrator.

Das macht natürlich keinen Sinn, da der Prozess kein codierter Agent ist und keine Agenteneinheiten benötigt. Interessanterweise erhielt ich beim Veröffentlichen im gemeinsamen Ordner und beim Ausführen einen anderen Fehler, wenn ich versuchte, ihn auszuführen: Cloud - Serverless-Lizenz ausgewählt. Es sind keine Cloud - Serverless-Laufzeiten in den Vorlagen dieses Ordners konfiguriert. (#2818) Dieser Fehler ergab tatsächlich Sinn, also fügte ich die [Default] Cloud Robots - Serverless-Maschine zum Ordner hinzu, wodurch der Fehler wieder zu dem zuvor genannten Serverless.Api.CreditsExceeded - Nicht genug Agentic Units, um die Automatisierung auszuführen. Bitte kontaktieren Sie Ihren Administrator.-Fehler zurückgeschaltet wurde.

Ich möchte, dass sich jemand von UiPath dazu äußert, da es sich möglicherweise um einen Fehler handelt? Ich nehme an, dass die Erstellung eines Prozesses mit dem Python SDK so speziell ist, dass das vorher noch niemand begegnet ist.

Ich bin verwirrter, ob ich das Python SDK überhaupt für meinen beabsichtigten Zweck verwende. Im Python SDK-Repo gibt es Beispiele, wie [pizza-order-function](uipath-python/packages/uipath/samples/pizza-order-function at main · UiPath/uipath-python · GitHub)

Ich habe bemerkt, dass die Datei UiPath.json folgendes enthält:

  "functions": {
    "main": "main.py:main"
  }
}

was für mich, basierend auf meinem Verständnis von Funktion vs Agent, bedeutet, dass es sich einfach um einen regulären Prozess handeln sollte, der von Orchestrator usw. aufgerufen werden kann. Aber die README.md sagt ausdrücklich: Ein codierter Agent, der Pizza-Bestellungen preisgibt und bestätigt...

Wenn ich mir main.py ansehe, gibt es nichts, was darauf hinweist, dass der Prozess ein codierter Agent ist, keinen LLM-Aufruf, keinen Prompt, nichts. Er nimmt nur Eingaben entgegen und gibt deterministische Ausgaben zurück. Missverstehe ich den gesamten Punkt und dass Funktionen dann nur Werkzeuge sind, die codierte Agenten aufrufen?

Um meinen Anwendungsfall zu wiederholen: Ich habe einen Prozess, der hybrid ist, da ich eine Menge Dinge aus einer Datenbank herunterlade und dann ein Python-Skript aufrufe, das davon ausgeht, dass die vorherigen Aktivitäten Dateien an bestimmten Orten im Projektverzeichnis heruntergeladen haben, und das wird unübersichtlich. Es könnte alles in einem Python-Skript erledigt werden, aber das Problem ist, dass es viel Variabilität gibt und wenn es zu einem Fehler oder einem Problem kommt, es schwierig, wenn nicht unmöglich ist, dies außerhalb der aufgerufenen Python-Aktivitäten an Orchestrator zu kommunizieren. Wenn ich den Prozess mit dem Python SDK erstellen könnte, würden wir dieses Problem vollständig beseitigen, wenn ich ihn nur aufrufen könnte!

Jeder Einblick wäre sehr willkommen, insbesondere wenn Sie zu den Entwicklern des UiPath Python SDK beitragen oder daran beteiligt sind :slight_smile:

Mit freundlichen Grüßen,

Ewen

Hallo @hivesew

Ich hatte vor kurzem genau dasselbe Problem bei einer Kundenpräsentation, lol.

Ich musste Agentic Units verwenden, um meinen codierten Agenten auszuführen. Aber ich wollte bewusst einen codierten Agenten in UiPath mit dem SDK erstellen.

Nach ein wenig Recherche habe ich festgestellt, dass, wenn Sie jemals das UiPath Python SDK verwenden, es sofort davon ausgeht, dass Sie einen codierten Agenten erstellen, und ihn dementsprechend bereitstellt. Das ist wahrscheinlich der Grund, warum Sie den Fehler erhalten. Und das ist kein Fehler; ich denke, es wird buchstäblich erwartet, dass Sie ihn so ausführen.

Wenn Sie die Verwendung von Agentic Units komplett vermeiden möchten, würde ich vorschlagen, Folgendes auszuprobieren: (habe ich vorher noch nicht versucht, also lassen Sie uns das gemeinsam ansehen)

Anstatt den Weg von UiPath-Prozess → Invoke Python → unordentliche Dateiabhängigkeiten zu gehen – exponieren Sie lieber eine Main()-Funktion aus dem Python-Code, die Ihre wichtige Arbeit erledigt, und setzen Sie sie dann normal ein, ABER versuchen Sie, sie über eine Orchestrator-API aufzurufen (die Sie in der UiPath Swagger UI finden können).

Das könnte Ihr Problem lösen.

Lassen Sie mich wissen, wie es läuft :slightly_smiling_face:

Ich würde gerne von UiPath eine Bestätigung dazu erhalten, denn für mich macht das nicht viel Sinn. Alles, was ich möchte, ist in der Lage zu sein, einen codierten Python-Prozess zu erstellen, der vom Orchestrator aus aufgerufen werden kann, um die Vorteile von Protokollierung/Verfolgung zu nutzen. Ich verstehe nicht, warum das Agenteneinheiten erfordern würde.

Mein aktueller Prozess wird über einen Warteschlangen-Trigger aufgerufen und beinhaltet die Verwendung eines in dem Projekt gespeicherten Python-Skripts mit einer Hauptfunktion, die über die Python-Aktivitäten aufgerufen wird, aber es ist eine Umständlichkeit. Eigentlich möchte ich nur wissen, ob das Python-SDK ausschließlich für die Verwendung mit Agenten gedacht ist oder auch für codierte Prozesse, wie es der Einsteigerleitfaden bewirbt.

Lassen Sie mich hier @Alexandru_Bizon taggen, der am besten weiß, wie er antworten kann und mich korrigieren kann, falls ich falsch liege.

Soweit ich verstanden habe, arbeiten wir daran, das Python SDK und die erforderlichen Plattformabhängigkeiten zu erweitern, um Ihren Anwendungsfall abzudecken.

Hallo @hivesew - danke für den ausführlichen Bericht und @JarrydScott für die schnelle Hilfe.

Einfache Klärung, um die Verwirrung zu beseitigen: das UiPath Python SDK ist GA, aber speziell für das Erstellen von codierten Agenten. Deshalb wird alles, was Sie heute damit veröffentlichen, als Agent geroutet, einschließlich Ihres „einfachen Prozesses, der einen String zurückgibt.“ Aus der Perspektive der Plattform ist zurzeit alles aus dem SDK ein Agent, weshalb Sie auf Serverless.Api.CreditsExceeded - Nicht genug Agentic Units stoßen. Jarryds Einschätzung dazu ist korrekt.

Was Sie tatsächlich wollen, sind UiPath Functions — ein neues Produkt, das wir auf der bestehenden Infrastruktur des Python SDK aufbauen. Functions erweitert dasselbe SDK, die Packaging und das uipath CLI, das Sie bereits verwenden, sodass bei seiner Verfügbarkeit Ihre Arbeit übernommen wird; das Projekt wird nur anders typisiert und geroutet.

Was UiPath Functions sein wird

Eine erstklassige Möglichkeit, codierte Automatisierungen als ordentliche Orchestrator-Prozesse zu veröffentlichen und aufzurufen: anfänglich mit Python, mit JavaScript / TypeScript auf der Roadmap. Functions läuft auf der Standard-Roboter-Laufzeit mit eigenem Preismodell (noch in der finalen Abstimmung). Ihr genaues Szenario, ein hybrider Prozess, bei dem der Großteil der Logik in Python ist und Sie einfach eine saubere Orchestrator-Ausführung wünschen, ist einer der Hauptanwendungsfälle, die das Design vorantreiben.

Wo wir heute stehen

  • Python SDK: GA, für codierte Agenten.
  • UiPath Functions für Python (auf Basis des SDKs): WIP, öffentliche Vorschau in den nächsten paar Wochen. Bis dahin wird alles, was über das SDK veröffentlicht wird, durch die Agentenlaufzeit geroutet und verbraucht Agentic Units.
  • UiPath Functions für JS/TS: WIP - ein spezielles SDK kommt, das einige wirklich neue Anwendungsfälle eröffnet. Teaser: Wir zielen auf Antwortzeiten unter 100 ms ab.
  • Die Fehlbezeichnung der pizza-order-function README als codierten Agenten ist ein Dokumentationsfehler, der Block "functions" in der UiPath.json ist das richtige Signal. Wir werden das beheben.

Meine Empfehlung

Um ehrlich zu sein: es gibt heute keinen sauberen Workaround. Genau dafür wurde UiPath Functions entwickelt, um Code als erstklassigen Bürger auf der UiPath-Plattform zu integrieren.

Der beste Weg ist, auf die öffentliche Vorschau zu warten. Sie liefert das, was Sie anstreben: sauberen Python-Code, native Orchestrator-Ausführung, keinen Verbrauch von Agentic Units. Halten Sie sich noch ein wenig länger an Ihrem aktuellen hybriden Setup fest, die Migration sollte unkompliziert sein, da Sie bereits die Erkundungsarbeit mit dem SDK geleistet haben.

Ich werde hier wieder posten, sobald die öffentliche Vorschau verfügbar ist. Vielen Dank für Ihre Geduld, während wir daran arbeiten.

Alex Bizon

@hivesew @JarrydScott wir haben jetzt Python-Funktionen für alle in der Community live!

:snake: Python-Funktionen befinden sich jetzt im öffentlichen Preview - Neuigkeiten / Produktneuigkeiten - UiPath Community Forum

Aha! Ich habe darauf gewartet, vielen Dank @Alexandru_Bizon! Gibt es eine Möglichkeit für Unternehmensorganisationen, während der öffentlichen Vorschau Zugriff zu erhalten? Ansonsten kann ich es kaum erwarten, bis dies für Unternehmen live geht, damit ich meinen unordentlichen RPA-Prozess auf dem Studio-Desktop, der Python ausführt, in dieses :slight_smile: umwandeln kann.

Ich plane, es in etwa einer Woche für alle im Unternehmen zu aktivieren.