Vytvoření kódu z přirozeného jazyka
Jednou z možností modelů Azure OpenAI je vygenerovat kód z výzev přirozeného jazyka. Úkoly můžou být v rozsahu od jednoduchého příkazu o jeden řádek až po celou aplikaci. Modely AI můžou také upravit a aktualizovat zadaný kód nebo předchozí odpovědi, aby bylo možné dokončit požadovaný úkol.
Modely AI pro generování kódu
V předchozích generacích gpt
modelů byly některé vytrénovány speciálně pro použití s kódem (často označované jako modely kódu ). S tím, jak se vyvíjejí nové generace modelů, základní modely výrazně zlepšují výkon a porozumění jazyku i kódu, což vede k tomu, že nepotřebují konkrétní modely kódu. Výsledkem tohoto vylepšení je pouze jeden model pro novější generace (například gpt-35-turbo
a gpt-4
), který lze použít pro přirozený jazyk i kód.
Příklady v tomto modulu se používají gpt-35-turbo
.
Psaní funkcí
Modely Azure OpenAI můžou vytvářet funkce a aplikace v několika jazycích pouhým popisem toho, co chcete. Řekněme například, že potřebujete implementaci binárního vyhledávání, ale nepamatujete si, jak se to dělá. Vzhledem k výzvě write a function for binary search in python
pravděpodobně obdržíte odpověď s funkcí a vysvětlením kódu.
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.
Požadavek může jít dál než funkce a požádat o řadu funkcí nebo celé aplikace. Odpověď poskytuje dobrý výchozí bod pro úkol, který se pokoušíte dosáhnout.
Změna jazyka kódování
Pokud máte kód v jednom jazyce, ale potřebujete ho v jiném, Azure OpenAI vám ho může přeložit. Řekněme například, že máte tuto print_squares
funkci v Pythonu.
def print_squares(n):
for i in range(1, n+1):
print(i**2)
Pokud zadáte tento kód spolu s výzvou convert this code to C#
, pravděpodobně se zobrazí něco podobného následující funkci.
public void PrintSquares(int n)
{
for (int i = 1; i <= n; i++)
{
Console.WriteLine(i * i);
}
}
Všimněte si rozdílů mezi tím, jak for
se smyčky a funkce definují v různých jazycích (včetně modifikátorů přístupu v jazyce C#), a odpovídajícím způsobem změnil kód.
Vysvětlení neznámého kódu
Modely Azure OpenAI jsou užitečné pro pochopení kódu, který nedává smysl, nebo může být v jazyce, který neznáte. Řekněme například, že jste dostali následující funkci (ve fiktivním programovacím jazyce!) a nevěděli jste, jak ji pochopit.
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));
}
}
Při poskytnutí modelu spolu s výzvou could you explain what this code is doing?
získáte odpověď podobnou následující:
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.
Díky kombinaci vysvětlení a překladu do jazyka, který znáte, je tato funkce ještě užitečnější.