Овај водич ће вам показати како да аутоматски генеришете код за Python Web API користећи одговарајуће алате и библиотеке.
Прво, уверите се да имате инсталиран Python и потребне пакете као што су Flask или FastAPI.
# Пример инсталације FastAPI и Uvicorn
pip install fastapi uvicornЕво једноставног примера како да направите основни API користећи FastAPI:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Здраво, свет!"}Да бисте покренули сервер, користите следећу команду:
uvicorn main:app --reloadОво ће покренути ваш API на http://127.0.0.1:8000.
Можете додати више руте за различите HTTP методе:
@app.post("/items/")
async def create_item(item: dict):
return {"item": item}Креирање Python Web API-а је једноставно уз помоћ модерних алата као што су FastAPI и Flask. Ови алати вам омогућавају брз развој и лако одржавање ваших апликација.
#import necessary libraries
import flask
from flask import request, jsonify
#create an instance of the Flask class
app = flask.Flask(__name__)
#create an endpoint for the API
@app.route('/api/v1/endpoint', methods=['GET'])
def api_endpoint():
#get the request data
data = request.get_json()
#process the data
result = process_data(data)
#return the result
return jsonify(result)
#function to process the data
def process_data(data):
#process the data
result = {'result': 'success'}
#return the result
return result
#run the Flask app
if __name__ == '__main__':
app.run()Поново покретање упита даје нам овај резултат:
#import necessary libraries
import flask
from flask import request, jsonify
#create a Flask app
app = flask.Flask(__name__)
#create a route for the API
@app.route('/api', methods=['GET'])
def api_call():
#get the data from the request
data = request.get_json()
#process the data
result = process_data(data)
#return the result
return jsonify(result)
#define the process_data function
def process_data(data):
#do something with the data
result = data + 1
#return the result
return result
#run the app
if __name__ == '__main__':
app.run()Постоји само мала разлика између ова два резултата. Хајде да овог пута урадимо супротно, подесимо температуру на 0.9:
# Import necessary libraries
import flask
from flask import request, jsonify
# Create a Flask app
app = flask.Flask(__name__)
# Create a route for the API
@app.route('/api', methods=['GET'])
def api_call():
# Get the data from the request
data = request.args
# Process the data
result = process_data(data)
# Return the result
return jsonify(result)
# Function to process the data
def process_data(data):
# Do something with the data
result = data + 1
# Return the result
return result
# Run the app
if __name__ == '__main__':
app.run()и други покушај са температуром 0.9:
import flask
from flask import request, jsonify
# create the Flask app
app = flask.Flask(__name__)
app.config['DEBUG'] = True
# create some test data
books = [
{'id': 0, 'title': 'A Fire Upon The Deep', 'author': 'Vernor Vinge', 'first_sentence': 'The coldsleep itself was dreamless.', 'year_published': '1992'},
{'id': 1, 'title': 'The Ones Who Walk Away From Omelas', 'author': 'Ursula K. Le Guin', 'first_sentence': 'With a clamor of bells that set the swallows soaring, the Festival of Summer came to the city Omelas, bright-towered by the sea.', 'published': '1973'},
{'id': 2, 'title': 'Dhalgren', 'author': 'Samuel R. Delany', 'first_sentence': 'to wound the autumnal city.', 'published': '1975'}
]
# create an endpoint
@app.route('/', methods=['GET'])
def home():
return '''<h1>Welcome to our book API!</h1>'''
@app.route('/api/v1/resources/booksКао што видите, резултати не могу бити разноврснији.
Note, да постоје још параметара које можете мењати да бисте добили различите резултате, као што су top-k, top-p, repetition penalty, length penalty и diversity penalty, али они нису обухваћени овим курикулумом.
Постоји много техника које можете применити да бисте добили оно што желите. Временом ћете развити свој стил како будете све више користили упите.
Поред техника које смо обрадили, постоје и неке добре праксе које треба узети у обзир када радите са LLM-ом.
Ево неколико добрих пракси које треба имати на уму:
- Наведите контекст. Контекст је важан, што више можете прецизирати као што су домен, тема и слично, то боље.
- Ограничите излаз. Ако желите одређен број ставки или одређену дужину, наведите то.
- Наведите и шта и како. Запамтите да поменете и шта желите и како то желите, на пример „Направи Python Web API са рутама products и customers, подели га у 3 фајла“.
- Користите шаблоне. Често ћете желети да обогатите своје упите подацима из ваше компаније. Користите шаблоне за то. Шаблони могу имати променљиве које замените стварним подацима.
- Правописно пишите. LLM-ови могу дати исправан одговор, али ако правилно пишете, добићете бољи одговор.
Ево кода у Python-у који показује како направити једноставан API користећи Flask:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def hello():
name = request.args.get('name', 'World')
return f'Hello, {name}!'
if __name__ == '__main__':
app.run()Користите AI асистента као што су GitHub Copilot или ChatGPT и примените технику „самопобољшања“ да унапредите код.
Покушајте да решите задатак тако што ћете додати одговарајуће упите у код.
Tip
Формулишите упит да тражите побољшања, добро је ограничити колико побољшања желите. Такође можете тражити побољшања у одређеном смислу, на пример архитектура, перформансе, безбедност и слично.
Зашто бих користио chain-of-thought prompting? Прикажи ми 1 тачан и 2 нетачна одговора.
- Да научим LLM како да реши проблем.
- B, Да научим LLM да пронађе грешке у коду.
- C, Да упутим LLM да смисли различита решења.
А: 1, јер chain-of-thought значи показати LLM-у како да реши проблем тако што му се да низ корака, као и слични проблеми и како су решени.
Управо сте користили технику самопобољшања у задатку. Узмите било који програм који сте направили и размислите о побољшањима која бисте желели да примените. Сада употребите технику самопобољшања да примените предложене измене. Каквог сте мишљења о резултату, бољи или лошији?
Након што завршите ову лекцију, погледајте нашу Generative AI Learning collection да наставите да унапређујете своје знање о генеративној вештачкој интелигенцији!
Прелазите на Лекцију 6 где ћемо применити наше знање о Prompt Engineering-у правећи апликације за генерисање текста
Одрицање од одговорности:
Овај документ је преведен коришћењем AI преводилачке услуге Co-op Translator. Иако се трудимо да превод буде тачан, молимо вас да имате у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитетним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.