Skip to content

Latest commit

 

History

History
134 lines (94 loc) · 4.82 KB

File metadata and controls

134 lines (94 loc) · 4.82 KB

Używanie Phi-4-mini-mm do generowania kodu

Phi-4-mini kontynuuje silne możliwości kodowania rodziny Phi. Możesz użyć Prompt, aby zadawać pytania związane z programowaniem. Oczywiście, po dodaniu silnej zdolności rozumowania, ma jeszcze większe możliwości kodowania, takie jak generowanie projektów zgodnie z wymaganiami. Na przykład generowanie projektów według wymagań, takich jak:

Wymagania

Stwórz aplikację koszyka zakupowego

  • Stwórz API Rest z następującymi metodami:
    • Pobierz listę piw, używając przesunięcia strony i limitu.
    • Pobierz szczegóły piwa po id.
    • Wyszukaj piwo po nazwie, opisie, sloganie, dopasowaniach do jedzenia i cenie.
  • Stwórz listę produktów na stronie głównej.
    • Stwórz pasek wyszukiwania do filtrowania produktów.
    • Przejdź do strony opisu po kliknięciu użytkownika na produkt.
  • (Opcjonalnie) Slicer do filtrowania produktów według ceny.
  • Stwórz koszyk zakupowy.
    • Dodawaj produkty do koszyka.
    • Usuwaj produkty z koszyka.
    • Obliczaj łączną cenę produktów w koszyku.

Przykładowy kod - 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)

Zastrzeżenie:
Niniejszy dokument został przetłumaczony przy użyciu usługi tłumaczenia AI Co-op Translator. Mimo że dążymy do dokładności, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w języku źródłowym powinien być uznawany za źródło autorytatywne. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia.