Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Warning
Przepływ monitów w usłudze Microsoft Foundry i Azure Machine Learning zostanie wycofany 20 kwietnia 2027 r. Przepływ monitów nie jest już zalecany w przypadku nowego programowania. Przeprowadź migrację istniejących aplikacji i wdrożeń przepływu monitów do platformy agentów Microsoft przed 20 kwietnia 2027 r.
Obrazy kontenerów przepływu monitu nie otrzymują już aktualizacji, w tym aktualizacji zabezpieczeń i pakietów. Dotyczy to obrazów środowiska uruchomieniowego Monituj o przepływ, w tym promptflow-runtime, promptflow-runtime-stablei promptflow-python.
Po 20 kwietnia 2027 r. przepływ monitu, w tym środowisko tworzenia w sieci Web w usłudze Microsoft Foundry i Azure Machine Learning, rozszerzenia programu VS Code i powiązane obrazy kontenera przepływu monitów, nie będą już obsługiwane ani dostępne.
Jeśli aplikacja zależy od wdrożeń przepływu monitu lub obrazów środowiska uruchomieniowego, zaplanuj przeniesienie tych obciążeń do obsługiwanych alternatyw, takich jak Microsoft Agent Framework przed datą wycofania. Aby uzyskać wskazówki dotyczące migracji, zobacz Przewodnik po migracji przepływu monitów i przykłady kodu migracji.
Narzędzie Python umożliwia tworzenie niestandardowych fragmentów kodu jako samodzielnych węzłów wykonywalnych w przepływie monitów. Możesz łatwo tworzyć narzędzia Python, edytować kod i weryfikować wyniki.
Dane wejściowe
| Nazwa/nazwisko | Typ | Opis | Wymagane |
|---|---|---|---|
| Code | ciąg | fragment kodu Python | Yes |
| Dane wejściowe | - | Lista parametrów funkcji narzędzia i ich przypisań | - |
Types
| Typ | Przykład języka Python | Opis |
|---|---|---|
| int | param: int | Typ liczby całkowitej |
| bool | param: bool | Typ boolowski |
| ciąg | parametr: str | Typ ciągu |
| podwójny | param: float | Podwójny typ |
| list | param: list lub param: List[T] | Typ listy |
| obiekt | param: dict lub param: Dict[K, V] | Typ obiektu |
| Połączenie | param: CustomConnection | Typ połączenia jest obsługiwany specjalnie |
Parametry z adnotacją Connection typu są traktowane jako dane wejściowe połączenia, co oznacza:
- Rozszerzenie przepływu monitu wyświetla selektor do wybrania połączenia.
- Podczas wykonywania przepływ monitu próbuje znaleźć połączenie o tej samej nazwie z przekazanej wartości parametru.
Uwaga / Notatka
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ą zwracaną wartością funkcji narzędzia Python.
Pisanie za pomocą narzędzia Python
Podczas pisania w narzędziu Python skorzystaj z poniższych wskazówek.
Wytyczne
Python kod narzędzia powinien składać się z kompletnego kodu Python, w tym wszelkich niezbędnych importów modułów.
Python kod narzędzia musi zawierać funkcję ozdobioną
@tool(funkcja narzędzia), która służy jako punkt wejścia do wykonania.@toolZastosuj dekorator tylko raz w fragmencie kodu.Poniższy przykład definiuje narzędzie Python
my_python_tool, które jest ozdobione@tool.Python parametry funkcji narzędzia muszą być przypisane w sekcji
Inputs.Poniższy przykład definiuje dane wejściowe
messagei przypisuje jeworld.Funkcja narzędzia Python musi mieć wartość zwracaną.
Poniższy przykład zwraca połączony ciąg.
Code
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
| Nazwa/nazwisko | Typ | Przykładowa wartość w przepływie YAML | Wartość przekazana do funkcji |
|---|---|---|---|
| komunikat | ciąg | world |
world |
| my_conn | CustomConnection |
my_conn |
CustomConnection Obiektu |
Przepływ monitu próbuje znaleźć połączenie o nazwie my_conn podczas wykonywania.
Dane wyjściowe
"hello world"
Wywoływanie modelu rozumowania z narzędzia Python
Jeśli musisz wywołać modele rozumowania, których węzeł LLM nie obsługuje, możesz wywołać modele bezpośrednio za pomocą narzędzia Python. W poniższym przykładzie pokazano, jak wywołać model rozumowania z narzędzia Python.
from promptflow import tool
from promptflow.connections import AzureOpenAIConnection
from openai import AzureOpenAI
@tool
def my_python_tool(
OpenAIConnection: AzureOpenAIConnection,
scope_reply: str
):
model_name = "o3-mini"
deployment = "o3-mini"
print(OpenAIConnection['api_base'])
endpoint = OpenAIConnection['api_base'] #"https://<your endpoint>.openai.azure.com/"
model_name = "o3-mini" #your model name
deployment = "o3-mini" #your deployment name
subscription_key = OpenAIConnection['api_key']
api_version = "2024-12-01-preview" #Supply an API version that supports reasoning models.
client = AzureOpenAI(
api_version=api_version,
azure_endpoint=endpoint,
api_key=subscription_key,
)
response = client.chat.completions.create(
messages=[
{
"role": "system",
"content": "You are a helpful assistant.",
},
{
"role": "user",
"content": "I am going to Paris, what should I see?",
}
],
max_completion_tokens=100000,
model=deployment
)
return response.choices[0].message.content
Połączenie niestandardowe w narzędziu Python
Jeśli tworzysz narzędzie Python, które wymaga wywoływania usług zewnętrznych z uwierzytelnianiem, użyj niestandardowego połączenia w przepływie monitów. Można go użyć do bezpiecznego przechowywania klucza dostępu, a następnie pobierania go w kodzie Python.
Tworzenie połączenia niestandardowego
Utwórz połączenie niestandardowe, które przechowuje wszystkie klucze interfejsu API modelu języka lub inne wymagane poświadczenia.
Przejdź do przepływu monitu w obszarze roboczym, a następnie wybierz kartę Połączenia .
Wybierz pozycję Utwórz>niestandardowy.
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ść.
Uwaga / Notatka
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 Python
Aby użyć połączenia niestandardowego w kodzie Python:
W sekcji kodu w węźle Python zaimportuj niestandardową bibliotekę połączeń
from promptflow.connections import CustomConnection. Zdefiniuj parametr wejściowy typuCustomConnectionw funkcji narzędzia.Przeanalizuj dane wejściowe w sekcji danych wejściowych, a następnie wybierz docelowe połączenie niestandardowe na liście rozwijanej Wartość .
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