Skip to content

Latest commit

 

History

History
134 lines (94 loc) · 4.64 KB

File metadata and controls

134 lines (94 loc) · 4.64 KB

Uporaba Phi-4-mini-mm za generiranje kode

Phi-4-mini nadaljuje močne zmožnosti kodiranja družine Phi. Za vprašanja, povezana s kodiranjem, lahko uporabite Prompt. Seveda, po dodajanju močne sposobnosti razmišljanja, ima še močnejše zmožnosti kodiranja, kot je generiranje projektov glede na zahteve. Na primer, generiranje projektov glede na zahteve, kot so:

Zahteva

Ustvarite aplikacijo Nakupovalni Voziček

  • Ustvarite API Rest z naslednjimi metodami:
    • Pridobite seznam piv z uporabo strani, offseta in limita.
    • Pridobite podrobnosti piva po id-ju.
    • Iščite pivo po imenu, opisu, sloganih, kombinacijah hrane in ceni.
  • Ustvarite seznam izdelkov na glavni strani.
    • Ustvarite iskalno vrstico za filtriranje izdelkov.
    • Ob kliku na izdelek preusmerite na stran z opisom.
  • (Neobvezno) Drsnik za filtriranje izdelkov po ceni.
  • Ustvarite nakupovalni voziček.
    • Dodajte izdelke v voziček.
    • Odstranite izdelke iz vozička.
    • Izračunajte skupno ceno izdelkov v vozičku.

Primer kode - Python

import requests
import torch
from PIL import Image
import soundfile
from transformers import AutoModelForCausalLM, AutoProcessor, GenerationConfig,pipeline,AutoTokenizer

model_path = 'Your Phi-4-mini-mm-instruct'

kwargs = {}
kwargs['torch_dtype'] = torch.bfloat16

processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)

model = AutoModelForCausalLM.from_pretrained(
    model_path,
    trust_remote_code=True,
    torch_dtype='auto',
    _attn_implementation='flash_attention_2',
).cuda()

generation_config = GenerationConfig.from_pretrained(model_path, 'generation_config.json')

user_prompt = '<|user|>'
assistant_prompt = '<|assistant|>'
prompt_suffix = '<|end|>'

requirement = """

Create a Shopping Cart App

- Create an API Rest with the following methods:
    - Get a list of beers using page offset and limit.
    - Get beer details by id.
    - Search for beer by name, description, tagline, food pairings, and price.
- Create a list of products on the main page.
    - Create a search bar to filter products.
    - Navigate to the description page when the user clicks on a product.
- (Optional) Slicer to filter products by price.
- Create a shopping cart.
    - Add products to the cart.
    - Remove products from the cart.
    - Calculate the total price of the products in the cart."""

note = """ 

            Note:

            1. Use Python Flask to create a Repository pattern based on the following structure to generate the files

            |- models
            |- controllers
            |- repositories
            |- views

            2. For the view page, please use SPA + VueJS + TypeScript to build

            3. Firstly use markdown to output the generated project structure (including directories and files), and then generate the  file names and corresponding codes step by step, output like this 

               ## Project Structure

                    |- models
                        | - user.py
                    |- controllers
                        | - user_controller.py
                    |- repositories
                        | - user_repository.py
                    |- templates
                        | - index.html

               ## Backend
                 
                   #### `models/user.py`
                   ```python

                   ```
                   .......
               

               ## Frontend
                 
                   #### `templates/index.html`
                   ```html

                   ```
                   ......."""

prompt = f'{user_prompt}Please create a project with Python and Flask according to the following requirements:\n{requirement}{note}{prompt_suffix}{assistant_prompt}'

inputs = processor(prompt, images=None, return_tensors='pt').to('cuda:0')

generate_ids = model.generate(
    **inputs,
    max_new_tokens=2048,
    generation_config=generation_config,
)

generate_ids = generate_ids[:, inputs['input_ids'].shape[1] :]

response = processor.batch_decode(
    generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]

print(response)

Omejitev odgovornosti:
Ta dokument je bil preveden z uporabo storitve za avtomatski prevod AI Co-op Translator. Čeprav si prizadevamo za natančnost, vas opozarjamo, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku velja za avtoritativni vir. Za ključne informacije priporočamo strokovni človeški prevod. Za morebitne nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda, ne odgovarjamo.