Konstruowanie kodu z języka naturalnego
Jedną z możliwości modeli usługi Azure OpenAI jest generowanie kodu na podstawie monitów języka naturalnego. Zadania mogą obejmować od prostego jednowierszowego polecenia do pełnej aplikacji. Modele sztucznej inteligencji mogą również edytować i aktualizować podany kod lub poprzednie odpowiedzi w celu ukończenia żądanego zadania.
Modele sztucznej inteligencji na potrzeby generowania kodu
W poprzednich gpt
generacjach modeli niektóre zostały przeszkolone specjalnie do użycia z kodem (często nazywanymi modelami codex ). W miarę rozwoju nowych pokoleń modeli podstawowe modele znacząco zwiększają wydajność i zrozumienie języka i kodu, co powoduje, że nie są potrzebne określone modele kodu. To ulepszenie powoduje tylko jeden model dla nowszych generacji (takich jak i gpt-4
), które mogą być używane zarówno dla języka naturalnego, jak gpt-35-turbo
i kodu.
Przykłady w tym module korzystają z elementu gpt-35-turbo
.
Funkcje zapisu
Modele usługi Azure OpenAI mogą tworzyć funkcje i aplikacje w kilku językach, opisując potrzebne wzory. Załóżmy na przykład, że potrzebujesz implementacji wyszukiwania binarnego, ale nie pamiętasz, jak to zrobić. Po wyświetleniu monitu write a function for binary search in python
prawdopodobnie otrzymasz odpowiedź z funkcją i wyjaśnieniem kodu.
Sure, here's an example implementation of binary search algorithm in Python:
def binary_search(array, target):
low = 0
high = len(array) - 1
while low <= high:
mid = (low + high) // 2
if array[mid] == target:
return mid
elif array[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
This function takes in two arguments - an array of integers and a target integer that we want to search
for in the array. The function initializes two pointers - low and high - to the first and last indices
of the array, respectively.
Inside the while loop, the function calculates the middle index using integer division (//). If the
middle element is equal to the target, the function returns the index of the middle element. If the
middle element is less than the target, we update the low pointer to mid + 1. Otherwise, we update the
high pointer to mid - 1. We continue these steps until we find the target or the pointers cross each
other (i.e., low > high).
If the target is not found in the array, the function returns -1.
Note that the binary search algorithm assumes that the input array is sorted in ascending order. If
the array is not sorted, the algorithm may not return the correct result.
Żądanie może przejść dalej niż funkcje i zażądać serii funkcji lub całej aplikacji. Odpowiedź stanowi dobry punkt wyjścia dla zadania, które próbujesz osiągnąć.
Zmienianie języka kodowania
Jeśli masz kod w jednym języku, ale potrzebujesz go w innym języku, usługa Azure OpenAI może ją przetłumaczyć. Załóżmy na przykład, że masz tę print_squares
funkcję w języku Python.
def print_squares(n):
for i in range(1, n+1):
print(i**2)
Jeśli podasz ten kod wraz z monitem convert this code to C#
, prawdopodobnie otrzymasz coś podobnego do poniższej funkcji.
public void PrintSquares(int n)
{
for (int i = 1; i <= n; i++)
{
Console.WriteLine(i * i);
}
}
Zwróć uwagę, że model zrozumiał różnice między for
sposobem pętli i funkcji zdefiniowanymi w różnych językach (w tym modyfikatorami dostępu w języku C#) i odpowiednio zmienił kod.
Informacje o nieznanym kodzie
Modele usługi Azure OpenAI są przydatne do zrozumienia kodu, który nie ma sensu lub może być w języku, którego nie znasz. Załóżmy na przykład, że otrzymano następującą funkcję (w fikcyjnym języku kodowania!) i nie wiesz, jak to zrozumieć.
fn qzplv(n: i32, m: i32) -> i32 {
if n == 0 {
return m + 1;
} else if m == 0 {
return qzplv(n - 1, 1);
} else {
return qzplv(n - 1, qzplv(n, m - 1));
}
}
Po podaniu do modelu wraz z monitem could you explain what this code is doing?
otrzymasz odpowiedź podobną do następującej:
Sure, I'd be happy to explain what this code is doing!
This code is implementing the Ackermann function, which is a well-known mathematical function that
grows very quickly in terms of computation time as its inputs increase. The function takes two integer
arguments (n and m) and returns another integer.
Here's how the function works:
- If n is equal to 0, the function returns m + 1.
- If m is equal to 0, the function calls itself recursively with n - 1 and 1 as arguments.
- Otherwise, the function calls itself recursively with n - 1 and the result of calling itself with n
and m - 1 as arguments.
The function is implemented in a way that is easy to understand and follow, but it has a very high
computational complexity. In fact, it grows so quickly that it can't be computed for values of n and m
greater than about 4 or 5.
Połączenie wyjaśnienia i tłumaczenia na język, który znasz, sprawia, że ta funkcja jest jeszcze bardziej przydatna.