Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Narzędzie języka Python umożliwia tworzenie niestandardowych fragmentów kodu jako samodzielnych węzłów wykonywalnych w przepływie monitu. Możesz łatwo tworzyć narzędzia języka Python, edytować kod i weryfikować wyniki.
Inputs
| Name | Typ | Description | Required |
|---|---|---|---|
| Code | ciąg | Fragment kodu w języku Python | Yes |
| Inputs | - | Lista parametrów funkcji narzędzia i ich przypisań | - |
Types
| Typ | Python example | Description |
|---|---|---|
| int | param: int | Integer type |
| bool | param: bool | Boolean type |
| ciąg | param: str | String type |
| double | param: float | Double type |
| list | param: list lub param: List[T] | List type |
| obiekt | param: dict lub param: Dict[K, V] | Object type |
| Connection | 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.
Note
The Union[...] type annotation is supported only for the connection type, for example, param: Union[CustomConnection, OpenAIConnection].
Outputs
Dane wyjściowe są zwracaną wartością funkcji narzędzia języka Python.
Pisanie za pomocą narzędzia języka Python
Podczas pisania w narzędziu języka Python skorzystaj z poniższych wskazówek.
Guidelines
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.@toolZastosuj dekorator tylko raz w fragmencie kodu.W poniższym przykładzie zdefiniowano 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
Inputssekcji .Poniższy przykład definiuje dane wejściowe
messagei przypisuje jeworld.Funkcja narzędzia języka 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
Inputs
| Name | Typ | Przykładowa wartość w przepływie YAML | Wartość przekazana do funkcji |
|---|---|---|---|
| komunikat | ciąg | world |
world |
| my_conn | CustomConnection |
my_conn |
CustomConnection sprzeciwiać się |
Przepływ monitu próbuje znaleźć połączenie o nazwie my_conn podczas wykonywania.
Outputs
"hello world"
Wywoływanie modelu rozumowania z poziomu narzędzia języka 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 języka Python. W poniższym przykładzie pokazano, jak wywołać model rozumowania z poziomu narzędzia języka 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 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 wszystkie klucze interfejsu API modelu języka lub inne wymagane poświadczenia.
Go to prompt flow in your workspace, and then select the Connections tab.
Select Create>Custom.
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ść.
Note
To set one key-value pair as secret, select the is secret checkbox. 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:
W sekcji kodu w węźle języka Python zaimportuj niestandardową bibliotekę
from promptflow.connections import CustomConnectionpołączeń . Zdefiniuj parametr wejściowy typuCustomConnectionw funkcji narzędzia.Parse the input to the input section, and then select your target custom connection in the Value dropdown.
For example:
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