Narzędzie języka Python

Narzędzie języka Python umożliwia oferowanie dostosowanych fragmentów kodu jako samodzielnych węzłów wykonywalnych w przepływie monitów. Możesz łatwo tworzyć narzędzia języka Python, edytować kod i weryfikować wyniki.

Dane wejściowe

Imię i nazwisko/nazwa Typ Opis Wymagania
Kod string Fragment kodu w języku Python Tak
Dane wejściowe - Lista parametrów funkcji narzędzia i jej przypisań -

Typy

Typ Przykład języka Python opis
int param: int Typ liczby całkowitej
bool param: bool Typ logiczny
string param: str Typ ciągu
double param: float Podwójny typ
lista param: list lub param: List[T] Typ listy
obiekt param: dict lub param: Dict[K, V] Object type
Połączenie param: Niestandardowy Połączenie ion Typ Połączenie ion jest obsługiwany specjalnie

Parametry z adnotacją Connection typu są traktowane jako dane wejściowe połączenia, co oznacza:

  • Rozszerzenie monitu o przepływ pokazuje selektor do wybrania połączenia.
  • W czasie wykonywania przepływ monitu próbuje znaleźć połączenie o tej samej nazwie z przekazanej wartości parametru.

Uwaga

Adnotacja Union[...] typu jest obsługiwana tylko dla typu połączenia, na przykład param: Union[CustomConnection, OpenAIConnection].

Dane wyjściowe

Dane wyjściowe są zwracane przez funkcję narzędzia języka Python.

Pisanie za pomocą narzędzia języka Python

Skorzystaj z poniższych wskazówek, aby napisać za pomocą narzędzia języka Python.

Wytyczne

  • Kod narzędzia języka Python powinien składać się z kompletnego kodu w języku Python, w tym wszelkich niezbędnych importów modułów.

  • Kod narzędzia języka Python musi zawierać funkcję ozdobioną @tool (funkcja narzędzia), która służy jako punkt wejścia do wykonania. @tool Zastosuj dekorator tylko raz w fragmencie kodu.

    Przykład w następnej sekcji definiuje narzędzie my_python_tooljęzyka Python , które zostało ozdobione elementem @tool.

  • Parametry funkcji narzędzia języka Python muszą być przypisane w Inputs sekcji .

    Przykład w następnej sekcji definiuje dane wejściowe message i przypisuje go world.

  • Funkcja narzędzia języka Python ma zwracany element.

    Przykład w następnej sekcji zwraca połączony ciąg.

Kod

Poniższy fragment kodu przedstawia podstawową strukturę funkcji narzędzia. Przepływ monitu odczytuje funkcję i wyodrębnia dane wejściowe z parametrów funkcji i adnotacji typu.

from promptflow import tool
from promptflow.connections import CustomConnection

# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(message: str, my_conn: CustomConnection) -> str:
    my_conn_dict = dict(my_conn)
    # Do some function call with my_conn_dict...
    return 'hello ' + message

Dane wejściowe

Imię i nazwisko/nazwa Typ Przykładowa wartość w przepływie YAML Wartość przekazana do funkcji
wiadomość string world world
my_conn CustomConnection my_conn CustomConnection Obiektu

Przepływ monitu próbuje znaleźć połączenie o nazwie my_conn w czasie wykonywania.

Dane wyjściowe

"hello world"

Połączenie niestandardowe w narzędziu języka Python

Jeśli tworzysz narzędzie języka Python, które wymaga wywoływania usług zewnętrznych z uwierzytelnianiem, użyj niestandardowego połączenia w przepływie monitu. Można go użyć do bezpiecznego przechowywania klucza dostępu, a następnie pobierania go w kodzie języka Python.

Tworzenie połączenia niestandardowego

Utwórz połączenie niestandardowe, które przechowuje cały klucz interfejsu API modelu językowego lub inne wymagane poświadczenia.

  1. Przejdź do przepływu monitu w obszarze roboczym, a następnie przejdź do karty Połączenie ions.

  2. Wybierz pozycję Utwórz>niestandardowy.

    Screenshot that shows flows on the Connections tab highlighting the Custom button in the drop-down menu.

  3. W okienku po prawej stronie możesz zdefiniować nazwę połączenia. Aby przechowywać poświadczenia i klucze, możesz dodać wiele par klucz-wartość, wybierając pozycję Dodaj pary klucz-wartość.

    Screenshot that shows adding a custom connection point and the Add key-value pairs button.

Uwaga

Aby ustawić jedną parę klucz-wartość jako wpis tajny, zaznacz pole wyboru jest wpisem tajnym . Ta opcja szyfruje i przechowuje wartość klucza. Upewnij się, że co najmniej jedna para klucz-wartość jest ustawiona jako wpis tajny. W przeciwnym razie połączenie nie zostanie pomyślnie utworzone.

Używanie połączenia niestandardowego w języku Python

Aby użyć połączenia niestandardowego w kodzie języka Python:

  1. W sekcji kodu w węźle języka Python zaimportuj niestandardową bibliotekę from promptflow.connections import CustomConnectionpołączeń . Zdefiniuj parametr wejściowy typu CustomConnection w funkcji narzędzia.

    Screenshot that shows the doc search chain node highlighting the custom connection.

  2. Przeanalizuj dane wejściowe w sekcji danych wejściowych, a następnie wybierz docelowe połączenie niestandardowe na liście rozwijanej Wartość .

    Screenshot that shows the chain node highlighting the connection.

Na przykład:

from promptflow import tool
from promptflow.connections import CustomConnection

@tool
def my_python_tool(message: str, myconn: CustomConnection) -> str:
    # Get authentication key-values from the custom connection
    connection_key1_value = myconn.key1
    connection_key2_value = myconn.key2