Lưu trữ danh mục: Small ERP

Thiết lập và sử dụng AI cho nhà phát triển

Thiết lập và sử dụng AI cho nhà phát triển
Nội dung

    Mô hình Phi-4 của Microsoft là mô hình ngôn ngữ nhỏ (SLM) 14 tỷ tham số tiên tiến, được thiết kế để vượt trội trong các nhiệm vụ lý luận, bao gồm toán học, hiểu ngôn ngữ và giải quyết vấn đề.
    Không giống như nhiều mô hình ngôn ngữ lớn, Phi-4 tập trung vào hiệu quả và khả năng truy cập, khiến nó trở thành một công cụ đa năng cho các nhà phát triển.

    Phi-4

    https://medium.com/@pankaj_pandey/58ca1e986208

    https://pub.towardsai.net/phi-4-multimodal-phi-4-mini-747852fd2688

    Phi-4 của Microsoft được xây dựng dựa trên khả năng lý giải tiên tiến của dòng sản phẩm tiền nhiệm (mẫu 14B) và đưa ra hai mẫu sản phẩm:

    1. Phi-4-Multimodal: Một mô hình đa phương thức hoàn chỉnh tích hợp văn bản, hình ảnh và âm thanh. Nó sử dụng “Hỗn hợp LoRA” để bạn có thể thêm bộ điều hợp cụ thể cho từng phương thức mà không cần đào tạo lại mô hình cơ sở.
    2. Phi-4-Mini: Với 3,8 tỷ tham số, Phi-4-Mini cung cấp khả năng hỗ trợ đa ngôn ngữ nâng cao, khả năng suy luận mạnh mẽ và thậm chí cả chức năng gọi hàm — tất cả trong một kiến ​​trúc nhỏ gọn.

    Nó có hiệu suất cao hơn các mô hình lớn hơn trong các nhiệm vụ như giải quyết vấn đề toán học và suy luận logic.
    Kết hợp dữ liệu tổng hợp để nâng cao chất lượng đào tạo. Nhỏ gọn nhưng mạnh mẽ với 14 tỷ thông số, yêu cầu ít hơn…
    Xử lý dữ liệu đầu vào lên đến 16.000 mã thông báo, cho phép tương tác dài hơn và phức tạp hơn.
    Có sẵn theo Giấy phép MIT cho mục đích sử dụng học thuật và thương mại.
    Chạy cục bộ với các khung như Ollama, Hugging Face Transformers, LM Studio và Open WebUI.

    Các trường hợp sử dụng chính

    Mô hình này được thiết kế để sử dụng cho mục đích thương mại và nghiên cứu đa ngôn ngữ và đa phương thức. Mô hình này cung cấp các ứng dụng cho các hệ thống và ứng dụng AI mục đích chung yêu cầu:

    • Môi trường hạn chế bộ nhớ/tính toán
    • Các tình huống bị ràng buộc độ trễ
    • Lý luận mạnh mẽ (đặc biệt là toán học và logic)
    • Gọi hàm và công cụ
    • Hiểu biết chung về hình ảnh
    • Nhận dạng ký tự quang học
    • Hiểu biểu đồ và bảng
    • So sánh nhiều hình ảnh
    • Tóm tắt nhiều hình ảnh hoặc video clip
    • Nhận dạng giọng nói
    • Bản dịch giọng nói
    • Kiểm tra chất lượng giọng nói
    • Tóm tắt bài phát biểu
    • Hiểu âm thanh

    Mô hình này được thiết kế để đẩy nhanh quá trình nghiên cứu về ngôn ngữ và các mô hình đa phương thức, nhằm mục đích sử dụng làm nền tảng cho các tính năng hỗ trợ AI tạo ra.

    Sử dụng Ollama

    Ollama là một khuôn khổ nhẹ được thiết kế để triển khai cục bộ các mô hình ngôn ngữ. Hệ thống sử dụng Python 3.8 trở lên. Đủ tài nguyên GPU và RAM.

    Cài đặt Ollama:

    # Tải xuống Ollama từ trang web chính thức

    curl -fsSL https://ollama.com/install.sh | sh

    Mac: brew install ollama

    Windows thì phài cài WSL (Windows Subsystem for Linux)

    Ollama cung cấp một sở thú mô hình sẵn sàng sử dụng mà bạn có thể chạy bằng một dòng mã duy nhất: ollama run <anymodel>. Điều này sẽ cho phép bạn chạy bất kỳ mô hình nào được liệt kê trong kho lưu trữ mô hình Ollama trong thiết bị đầu cuối của bạn một cách dễ dàng. Ví dụ: ollama run qwen2.5:14b –verbose.Tôi đã thêm –verbose để bạn có thể thấy hiệu suất của token mỗi giây (tok/giây).

    Cũng có thể chạy bất kỳ mô hình Hugging Face GGUF nào trực tiếp. Tất cả những gì bạn cần là liên kết kho lưu trữ Hugging Face và Ollama sẽ lo phần còn lại. Sử dụng định dạng lệnh sau:

    ollama run hf.co/{username}/{repository}

    Ví dụ: ollama run hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF

    Khi bạn chạy một mô hình bằng Ollama, bạn có tùy chọn chọn một phương pháp lượng tử hóa từ những phương pháp có sẵn trong kho lưu trữ của mô hình. Nếu bạn không chỉ định một phương pháp, Ollama sẽ sử dụng lược đồ Q4_K_M mặc định nếu có. Nếu không, nó sẽ chọn một phương pháp lượng tử hóa phù hợp khác từ kho lưu trữ. Tại sao nên sử dụng lượng tử hóa tùy chỉnh, vì: 1. Tối ưu hóa hiệu suất : Các lược đồ lượng tử hóa tùy chỉnh có thể giúp bạn điều chỉnh hiệu suất mô hình dựa trên khả năng của phần cứng. 2. Hiệu quả bộ nhớ : Các phương pháp lượng tử hóa khác nhau giúp giảm mức sử dụng bộ nhớ, cho phép bạn chạy các mô hình lớn hơn trên các máy nhỏ hơn. 3. Tính linh hoạt : Bạn có thể kiểm soát phương pháp lượng tử hóa nào sẽ sử dụng, cho phép bạn đạt được sự cân bằng giữa tốc độ và độ chính xác.

    Mỗi loại lượng tử hóa cung cấp các sự đánh đổi khác nhau giữa việc sử dụng bộ nhớ và hiệu suất mô hình. Sau đây là một số lược đồ lượng tử hóa phổ biến mà bạn có thể gặp phải:

    Q4_K_M : Đây là mặc định và cân bằng tốt giữa tốc độ và độ chính xác.
    IQ3_M : Lượng tử hóa mạnh mẽ hơn, hữu ích khi tài nguyên bị hạn chế.
    Q5_1 : Cung cấp độ chính xác tốt hơn khi tăng nhẹ mức sử dụng bộ nhớ.

    Bạn có thể dễ dàng ghi đè lượng tử hóa mặc định bằng cách chỉ định lược đồ mong muốn trong lệnh của bạn. Sau đây là định dạng để chạy mô hình Hugging Face với tùy chọn lượng tử hóa tùy chỉnh trong Ollama: ollama run hf .co /{tên người dùng}/{kho lưu trữ}:{lượng tử hóa}

    Ví dụ, nếu bạn muốn chạy mô hình Llama 3.2 3B-Instruct GGUF bằng cách sử dụng lược đồ lượng tử hóa IQ3_M , bạn sẽ sử dụng:

    ollama chạy hf.co/bartowski/Llama-3.2-3B-Instruct-GGUF:IQ3_M

    Nhận lấy link bằng cách như sau:Thiết lập và sử dụng AI cho nhà phát triển

    Thiết lập và sử dụng AI cho nhà phát triển

    Thiết lập và sử dụng AI cho nhà phát triển

    Tải xuống Mô hình Phi-4: ollama pull phi4
    Chạy mô hình: ollama run phi4
    Tương tác thông qua Python: Cài đặt thư viện Ollama Python:

    pip install ollama
    Ví dụ về tập lệnh Python:

    from ollama import chat
    model_name = “phi4”
    prompt = “Explain the theory of relativity.” //Giải thích về thuyết tương đối.
    response = chat(
    model=model_name,
    messages=[
    {“role”: “user”, “content”: prompt}
    ] )
    print(response[“message”][“content”])

    Chúng ta đang chạy Ollama với các tham số mặc định. Vậy nếu chúng ta muốn sửa đổi chúng thì sao? https://henrynavarro.org/ollama-vs-vllm-which-framework-is-better-for-inference-part-i-d8211d7248d2

    Để tạo mô hình của riêng bạn với các tham số cụ thể, bạn sẽ cần tạo Modelfile, một tệp văn bản thuần túy duy nhất chứa các tham số bạn muốn đặt. Sau đây là một ví dụ:

    FROM qwen2.5:14b

    # đặt nhiệt độ thành 1 [cao hơn là sáng tạo hơn, thấp hơn là mạch lạc hơn]

    PARAMETER temperature 0.5

    # đặt kích thước cửa sổ ngữ cảnh thành 8192, điều này kiểm soát số lượng mã thông báo mà LLM có thể sử dụng làm ngữ cảnh để tạo mã thông báo tiếp

    PARAMETER num_ctx 8192

    # mã thông báo cần tạo được đặt thành 4096 (tối đa)

    PARAMETER num_predict 4096

    # Cấu hình lời nhắc hệ thống Bạn là trợ lý AI hữu ích.

    SYSTEM “”“You are a helpful AI assistant.”“”

    Để xây dựng và chạy mô hình tùy chỉnh của bạn:

    # Xây dựng mô hình
    ollama create mymodel -f Modelfile

    # Chạy mô hình
    ollama run mymodel –verbose

    Danh sách điều chỉnh thông số này

    Ollama cung cấp hai cách để tương tác với các mô hình:

    1. Native REST API

    Ollama chạy máy chủ cục bộ trên cổng 11434 theo mặc định. Bạn có thể tương tác với nó bằng các yêu cầu HTTP chuẩn:

    import requests

    # Yêu cầu hoàn tất trò chuyện cơ bản
    response = requests.post(‘http://<your_ollama_server_ip>:11434/api/chat’,
    json={
    ‘model’: ‘qwen2.5:14b’,
    ‘messages’: [
    {
     ‘role’: ‘system’,
     ‘content’: ‘You are a helpful AI assistant.’
    },
    {
    ‘role’: ‘user’,
    ‘content’: ‘What is artificial intelligence?’
    }
    ],
    ‘stream’: False
    }
    )
    print(response.json()[‘message’][‘content’])

    2. Lớp tương thích OpenAI

    Để tích hợp liền mạch với các ứng dụng hiện có, Ollama cung cấp khả năng tương thích API OpenAI. Trước tiên, hãy khởi động máy chủ tương thích OpenAI:

    Để sử dụng với OpenAI Python SDK:

    from openai import OpenAI

    client = OpenAI(
    base_url=“http://<your_ollama_server_ip>:11434/v1”,
    api_key=“dummy” # vLLM chấp nhận yêu cầu khóa API, một trong những lợi thế của nó so với ollama. Trong trường hợp của chúng tôi, chúng tôi đặt None, vì vậy bạn có thể đặt bất kỳ chuỗi nào.
    )

    # Chat Phản hồi hoàn thành
    response = client.chat.completions.create(
    model=“qwen2.5:14b”,
    messages=[
    {“role”: “system”, “content”: “You are a helpful assistant.”},
    {“role”: “user”, “content”: “What is artificial intelligence?”}
    ] )
    print(response.choices[0].message.content)

    API của Ollama đi kèm với các tính năng thiết yếu giúp nó trở thành lựa chọn mạnh mẽ cho các nhà phát triển. Chúng tôi sẽ trình bày chi tiết tất cả các ưu điểm và nhược điểm của khuôn khổ này trong Phần III của hướng dẫn này, trong khi đó, hãy liệt kê các tính năng chính:

    Hỗ trợ phát trực tuyến: Tạo mã thông báo theo thời gian thực đảm bảo khả năng tương thích hoàn toàn với API OpenAI, hoàn hảo để tạo các ứng dụng phản hồi.

    Quản lý nhiều mô hình: Khả năng chạy nhiều mô hình cùng lúc, tuy nhiên có một lưu ý: Ollama sẽ dừng một mô hình để chạy mô hình khác khi VRAM bị giới hạn, điều này đòi hỏi phải lập kế hoạch tài nguyên cẩn thận.

    Kiểm soát tham số: Cài đặt có thể tùy chỉnh cao thông qua lệnh gọi API — một con dao hai lưỡi mang lại tính linh hoạt cao nhưng có thể gây choáng ngợp cho người mới bắt đầu và máy chủ sản xuất.

    Khả năng tương thích CPU: Quản lý tài nguyên thông minh tự động chuyển các lớp mô hình sang CPU khi VRAM không đủ, giúp có thể chạy các mô hình lớn ngay cả trên các hệ thống có bộ nhớ GPU hạn chế

    Không phụ thuộc ngôn ngữ: Tự do sử dụng ngôn ngữ lập trình ưa thích của bạn, cho dù đó là Python, JavaScript, Go hay bất kỳ ngôn ngữ nào có khả năng HTTP

    Ollama một khuôn khổ mạnh mẽ và thân thiện với người dùng để chạy LLM cục bộ. Từ quy trình cài đặt đơn giản đến khả năng API linh hoạt, Ollama nổi bật với sự đơn giản và dễ sử dụng, khiến nó trở thành một lựa chọn hấp dẫn cho các nhà phát triển muốn thử nghiệm với LLM nguồn mở.

    Hugging Face

    Sự có mặt của Phi-4 trên Hugging Face giúp đơn giản hóa quá trình tích hợp cho các nhà phát triển Python.

    Cài đặt phụ thuộc: pip install torch torchvision transformers accelerate
    Tải xuống và cấu hình mô hình:

    từ máy biến áp nhập AutoModelForCausalLM, AutoTokenizer

    from transformers import AutoModelForCausalLM, AutoTokenizer
    model_name = “microsoft/phi4”
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForCausalLM.from_pretrained(model_name, device_map=“auto”, torch_dtype=“auto”)
    Chạy suy luận:
    input_text = “Describe quantum entanglement.” //”Mô tả sự vướng víu lượng tử.”
    inputs = tokenizer(input_text, return_tensors=“pt”).to(model.device)
    outputs = model.generate(**inputs, max_new_tokens=150)
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    print(response)

    Sử dụng LM Studio

    LM Studio cung cấp môi trường dựa trên GUI để chạy Phi-4.

    Các bước thực hiện:

    Tải xuống LM Studio: Cài đặt LM Studio từ trang web chính thức .
    Tải Phi-4: Tìm kiếm Phi-4 trong thư viện mô hình và tải xuống.
    Tương tác thông qua GUI: Nhập lời nhắc vào giao diện để nhận phản hồi theo thời gian thực.

    Dùng vLLM

    # Cài đặt vLLM từ pip:
    pip install vllm

    # Tải và chạy mô hình:
    vllm serve “microsoft/Phi-4-mini-instruct”

    # Gọi máy chủ bằng curl:
    curl -X POST “http://localhost:8000/v1/chat/completions” \
    -H “Content-Type: application/json” \
    –data ‘{
    “model”: “microsoft/Phi-4-mini-instruct”,
    “messages”: [
    {
    “role”: “user”,
    “content”: “Thủ đô của Pháp là gì?”
    }
    ] }’

    Open WebUI

    Đối với các nhà phát triển thích giao diện dựa trên web.

    Các bước thực hiện:

    Cài đặt Open WebUI: Thực hiện theo hướng dẫn thiết lập được cung cấp trên trang GitHub của Open WebUI .
    Tải mô hình: Đảm bảo Phi-4 được thêm vào thư mục mô hình.
    Tương tác thông qua Giao diện Web: Khởi động máy chủ và sử dụng giao diện dựa trên trình duyệt để truy vấn.

    Chạy Open WebUI cục bộ trên máy Mac

    Các bước như sau:

    1.Cài đặtuvx

    brew install uv

    2. Khởi tạo môi trường ảo Python

    mkdir openwebui && cd openwebui
    uv init –python=3.11 .
    uv venv
    source .venv/bin/activate

    3. Cài đặt WebUI mở

    uv pip install open-webui

    4. Chạy ứng dụng

    open-webui serve

    Gio thi truy cập Open WebUI thông qua: http://0.0.0.0:8080

    Đối với những người thích tự động hóa, bạn có thể thêm một tập lệnh vào shell của mình.

    đoạn mã được cung cấp:

    #!/bin/bash
    # Function to start OpenWebUI
    startwebui() {
    if pgrep -f “open-webui serve” > /dev/null; then
    echo “OpenWebUI is already running”
    return 1
    fi
    (source “$HOME/openwebui/.venv/bin/activate” &&
    open-webui serve > “$HOME/logs/webui.log” 2>&1 &)
    echo “OpenWebUI started. Logs at ~/logs/webui.log”
    }
    # Function to stop OpenWebUI
    stopwebui() {
    pkill -f “open-webui serve”
    echo “OpenWebUI stopped”
    }

    Thực hiện Script

    chmod +x ~/scripts/webui-control.sh

    source ~/scripts/webui-control.sh

    bạn có thể sử dụng Automator để tạo một ứng dụng Mac mà bạn có thể nhấp đúp, thêm vào thanh dock,

    Mở Automatorứng dụng
    Chọn loại “Ứng dụng”
    Nhập “chạy” vào hộp tìm kiếm Hành động
    Nhấp đúp vào “Chạy Shell Script”
    Nhấp vào Runnút ở góc trên bên phải để kiểm tra.
    File > Save để tạo Ứng dụng.

    Thiết lập và sử dụng AI cho nhà phát triển

    Mặc dù Phi-4 được tối ưu hóa về hiệu quả nhưng vẫn cần phải đáp ứng các yêu cầu sau để hoạt động trơn tru:

    GPU: Tối thiểu RTX A6000 hoặc tương đương với 48 GB VRAM.
    RAM: Tối thiểu 48 GB.
    Lưu trữ: 40 GB cho các tệp mô hình và các phần phụ thuộc.

    1. Lý luận toán học
    Lời nhắc Prompt:

    Giải phương trình: x^2 – 5x + 6 = 0
    Phản ứng:

    Các nghiệm của phương trình là x = 2 và x = 3.
    2. Tạo mã
    Lời nhắc:

    Viết hàm Python để tính giai thừa (factorial) của một số.
    Phản ứng:

    def factorial(n) :
    if n = = 0 :
    return 1
    else :
    return n * factorial(n -1 )
    print(factorial(5)) # Đầu ra: 120

    Ưu điểm:

    Hiệu suất hiệu quả với thông số 14B.
    Mã nguồn mở và có thể truy cập rộng rãi.
    Linh hoạt trên nhiều khuôn khổ.
    Mạnh về các nhiệm vụ lý luận.

    Nhược điểm:

    Hiệu suất không nhất quán với các truy vấn mơ hồ hoặc cụ thể theo miền.
    Yêu cầu tài nguyên phần cứng lớn để có hiệu suất tối ưu.
    Hiệu suất hạn chế khi thực hiện các tác vụ liên quan đến dữ liệu có cấu trúc như thông tin dạng bảng.

    Microsoft Phi-4 là một bước tiến đáng kể trong quá trình phát triển các mô hình ngôn ngữ hiệu quả, tập trung vào lý luận. Cho dù bạn đang khám phá các tác vụ lý luận nâng cao hay tích hợp AI vào các dự án của mình, Phi-4 đều mang đến sự cân bằng giữa hiệu suất và khả năng truy cập.

    Thiết lập Open WebUI với Docker

    https://medium.com/@mauryaanoop3/harnessing-the-power-of-deepseek-r1-on-cpu-no-code-c91276aae88e

    Tạo một docker-compose.yaml tệp có cấu hình cần thiết:

    services:
    ollama:
    image: ollama/ollama:latest
    container_name: ollama
    volumes:
    ollama:/root/.ollama
    ports:
    “11434:11434”
    restart: unless-stopped

    open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
    “3000:8080”
    volumes:
    open-webui:/app/backend/data
    extra_hosts:
    “host.docker.internal:host-gateway”
    restart: always

    volumes:
    ollama:
    name: ollama
    open-webui:
    name: open-webui

    Một dịch vụ cho Ollama sử dụng olama/olama hình ảnh.
    Một dịch vụ khác dành cho Open WebUI, kéo hình ảnh từ sổ đăng ký vùng chứa GitHub.
    Ánh xạ các cổng cần thiết để cho phép truy cập UI.
    Bắt đầu dịch vụ bằng cách chạy:

    docker-compose up

    (Lần thiết lập đầu tiên có thể mất khoảng 15–20 phút.)

    Sau khi các container đang chạy, hãy mở trình duyệt và điều hướng đến:

    localhost:3000
    Tạo một tài khoản nếu được nhắc

    Công việc lặp đi lặp lại nên cần tự động hoá

    Công việc lặp đi lặp lại nên cần tự động hoá
    Nội dung

      Các công việc lặp đi lặp lại thường tiêu tốn rất nhiều thời gian và nguồn lực nhân sự mà không mang lại giá trị gia tăng đáng kể. Tự động hóa chúng có thể dẫn đến hiệu suất lao động cao hơn, giảm thiểu sai sót và nâng cao khả năng phản ứng của doanh nghiệp với sự thay đổi. Bằng cách loại bỏ các công việc lặp đi lặp lại, nhân viên có thể tập trung vào các hoạt động sáng tạo và chiến lược mà con người làm tốt hơn. Một công cụ tự động hóa công việc có thể giúp các doanh nghiệp tiếp cận hiệu quả cao hơn trong việc tự động hóa. N8n cho phép tạo ra các luồng làm việc linh hoạt, kết nối các ứng dụng và dịch vụ khác nhau một cách hiệu quả. Với giao diện trực quan và dễ sử dụng, ngay cả những ai không có kinh nghiệm chuyên sâu cũng có thể xây dựng các luồng tự động hóa phức tạp. Việc triển khai n8n trên máy server là một bước đi chiến lược, giúp doanh nghiệp không chỉ cải thiện hiệu quả hoạt động mà còn có thể phát triển và điều chỉnh các luồng tự động hóa để phù hợp với các yêu cầu mới.

      n8n trên Raspberry Pi chạy Debian 12 (Raspbian Bookworm).

      Raspberry Pi 4 là một thiết bị phổ biến để chạy các máy chủ nhỏ hoặc các dự án DIY, và cài đặt n8n trên nó có thể rất hữu ích cho việc tự động hóa các tác vụ.

      Cập Nhật Hệ Thống: sudo apt update && sudo apt upgrade -y

      Raspberry Pi OS (Debian 12) thường không đi kèm với phiên bản mới nhất của Node.js, nên bạn cần tải và cài đặt từ nguồn chính thức.

      curl -fsSL https://deb.nodesource.com/setup_18.x | sudo bash –

      – Sau đó, cài đặt Node.js và npm (quản lý gói cho Node): sudo apt install -y nodejs

      Xác nhận rằng Node.js và npm đã được cài đặt thành công: node -v npm -v

      Sử dụng lệnh sau để cài đặt n8n toàn cục (trên toàn hệ thống): sudo npm install -g n8n

      bạn có thể khởi chạy n8n bằng lệnh sau: n8n start

      Để đảm bảo rằng n8n khởi động lại khi Raspberry Pi của bạn khởi động, bạn có thể sử dụng `systemd` để tạo một service. Tạo file cấu hình cho systemd: sudo nano /etc/systemd/system/n8n.service

      Thêm nội dung sau vào file đó (thay `<your-user>` bằng tên người dùng của bạn):

      [Unit]

      Description=n8n Workflow Automation Tool

      After=syslog.target network-online.target

      [Service]

      Type=simple

      User=<your-user>

      Group=pi

      Environment=”PATH=/usr/bin:/usr/local/bin”

      WorkingDirectory=/home/<your-user>

      ExecStart=/usr/local/lib/node_modules/n8n/dist/index.js start –tunnel=false –host=0.0.0.0 –port=5678

      Restart=on-failure

      [Install]

      WantedBy=multi-user.target

      Lưu và thoát (`CTRL + X`, sau đó `Y` để lưu thay đổi).

      Sau khi tạo file service, hãy khởi động và kích hoạt n8n với các lệnh sau:

      sudo systemctl daemon-reload

      sudo systemctl start n8n.service

      sudo systemctl enable n8n.service

      PM2 (Process Manager 2) là một trình quản lý tiến trình mã nguồn mở, miễn phí và phổ biến dành cho các ứng dụng Node.js. Nó giúp bạn quản lý và duy trì các ứng dụng Node.js trong môi trường sản xuất một cách dễ dàng và hiệu quả.

      Cài đặt pm2: npm install -g pm2
      Khởi động n8n với pm2: pm2 start n8n
      Dừng n8n với pm2: pm2 stop n8n
      Khởi động lại n8n với pm2: pm2 restart n8n
      Xem nhật ký n8n với pm2: pm2 logs n8n
      Khởi động n8n khi khởi động hệ thống: pm2 startup systemd và làm theo hướng dẫn.

      Cấu hình biến môi trường

      Bạn có thể thiết lập các biến môi trường để ghi đè lên các cấu hình n8n mặc định. Ví dụ, thiết lập biến môi trường N8N_EMAIL_MODE=smtp pm2 restart n8n –update-env

      Bạn có thể tìm hiểu thêm về tất cả các cấu hình có thể cótại đây.

      pm2 env id sẽ hiển thị tất cả các biến môi trường được tải vào quy trình pm2 với được chỉ định số id khi chạy pm2 start n8n sẽ thấy, hoặc có thể lấy được id bằng cách chạy pm2 l

      PM2 cũng cho phép bạn cấu hình các biến này thông qua tệp cấu hình. Thực hiện lệnh `pm2 init simple` để tạo tệp cấu hình đơn giản.

      Mở tệp đã tạo và thay thế mã hiện có bằng đoạn mã bên dưới:

      module.exports = {
      apps : [{
      name : “n8n”,
      env: {
      N8N_BASIC_AUTH_ACTIVE:true,
      N8N_BASIC_AUTH_USER:”USERNAME”,
      N8N_BASIC_AUTH_PASSWORD:”PASSWORD”,

      N8N_PROTOCOL: “https”,

      WEBHOOK_TUNNEL_URL: “https://subdomain.example.com/”,

      N8N_HOST: “subdomain.example.com”
      }
      }] }
      Bây giờ, để khởi động n8n, hãy thực hiện lệnh:

      pm2 start ecosystem.config.js

      Lệnh trên sẽ tải cấu hình từ tệp ecosystem.config.js và khởi động n8n.

      khởi động lại Nginx và PM2 bằng lệnh sudo systemctl restart nginx và pm2 restart ecosystem.config.js.

      Điều hướng đến tên miền của bạn và bây giờ bạn sẽ có thể truy cập n8n.

      https://blog.n8n.io/how-to-set-up-n8n-via-pm2/

      Tự động khởi động n8n khi khởi động lại máy: pm2 startup Lệnh trên yêu cầu bạn chạy một lệnh khác. Sao chép và dán lệnh được đề xuất. PM2 hiện sẽ tự động khởi động lại khi khởi động.

      Để cho phiên bản n8n của bạn được cập nhật, bạn cần cài đặt phiên bản n8n mới nhất.

      1. Dừng dịch vụ n8n

      pm2 stop n8n
      2. Cài đặt phiên bản mới nhất của n8n

      npm install -g n8n@latest
      3. Khởi động lại dịch vụ n8n

      pm2 restart n8n

      N8N_PORT=6789 n8n start

      Cấu hình Nginx

      Tạo hoặc chỉnh sửa một file cấu hình Nginx, thường được lưu trong `/etc/nginx/sites-available/`, để phục vụ giao diện web của n8n. Sau đó, bạn sẽ kích hoạt file cấu hình đó và khởi động lại dịch vụ Nginx.

      sudo nano /etc/nginx/sites-available/n8n.conf

      Thêm nội dung sau vào file cấu hình;

      server {

      listen 80;

      server_name <your-domain>;

      location / {

      proxy_pass http://localhost:5678; # Địa chỉ của n8n

      proxy_set_header Host $host;

      proxy_set_header X-Real-IP $remote_addr;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_set_header X-Forwarded-Proto $scheme;

      } }

      server {

      listen 443 ssl http2;

      server_name <your-domain>;

      ssl_certificate /etc/letsencrypt/live/<your-domain>/fullchain.pem; # Đường dẫn tới chứng chỉ SSL của bạn

      ssl_certificate_key /etc/letsencrypt/live/<your-domain>/privkey.pem; # Đường dẫn tới khóa riêng tư của bạn

      location / { proxy_pass http://localhost:5678;

      proxy_set_header Host $host;

      proxy_set_header X-Real-IP $remote_addr;

      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_set_header X-Forwarded-Proto $scheme;

      } }

      Tạo một liên kết tượng trưng từ `/etc/nginx/sites-available/` đến `/etc/nginx/sites-enabled/`.

      sudo ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/

      cách chạy lệnh kiểm tra. sudo nginx -t

      sudo systemctl restart nginx

      Phiên bản miễn phí trên n8n đặt ra một số giới hạn về số lượng quy trình làm việc và người dùng. Ngoài ra, tài liệu có phần hạn chế và ứng dụng này đòi hỏi tư duy kỹ thuật. n8n được tổ chức xung quanh ba khái niệm chính, quy trình làm việc , nút và kết nối .

      • Luồng công việc : Luồng công việc chứa toàn bộ chuỗi sự kiện trong một đường ống. Nó bao gồm nhiều nút được liên kết với nhau bằng logic nội bộ.
      • Node : Một node là một tác vụ hoặc hành động cụ thể trong một quy trình làm việc lớn hơn. Mỗi node đại diện cho một tác vụ mô-đun và độc lập, chẳng hạn như truy xuất dữ liệu hoặc chạy một tập lệnh. Người dùng có thể dựa các node vào một thư viện các node Core hoặc Actions . Các node Core chứa các chức năng cơ bản được sử dụng rộng rãi, trong khi các Actions tương tác với các ứng dụng và dịch vụ bên ngoài. Người dùng cũng có thể tạo các node tùy chỉnh.
      • Kết nối : Kết nối liên kết hai nút với nhau, tạo thành chuỗi thực thi trong quy trình làm việc. Thông thường, đầu ra của một nút bao gồm đầu vào của nút tiếp theo.

      Thực thi đề cập đến một trường hợp chạy một quy trình công việc. Mỗi lần thực thi được liên kết với một trình kích hoạt. Trình kích hoạt bắt đầu quy trình công việc khi nó nhận được một sự kiện hoặc điều kiện đủ điều kiện. Ở chế độ thủ công, người dùng phải cố ý thực hiện quy trình công việc bằng trình kích hoạt thủ công. Các quy trình công việc không hoạt động chỉ có thể được khởi chạy thủ công. Ở chế độ sản xuất, một sự kiện hoặc điều kiện bên trong hoặc bên ngoài có thể tự động kích hoạt quy trình công việc. Ví dụ: bộ hẹn giờ có thể khởi chạy quy trình công việc theo lịch trình được xác định trước. n8n chứa một thư viện cốt lõi của các trình kích hoạt tích hợp sẵn .

      Để triển khai chuỗi các nút, người dùng có thể chọn từ thư viện n8n lớn về tích hợp tích hợp . Tích hợp là mẫu cho một loại tác vụ nhất định. Người dùng tùy chỉnh từng nút bằng các chi tiết cụ thể của ứng dụng để tích hợp vào quy trình làm việc.

      Thư viện tích hợp chứa một số lượng lớn các Nút lõi và Hành động tích hợp sẵn . Các Nút lõi triển khai các tác vụ cơ bản như thực thi tập lệnh shell, logic có điều kiện và truy cập tệp/cơ sở dữ liệu. Bộ sưu tập này cũng hỗ trợ các giao thức và tiêu chuẩn phổ biến bao gồm FTP, GraphQL, Git, HTML, LDAP, Markdown, SSH và XML. Các nút được chỉ định là Hành động có thể kết hợp các ứng dụng, dịch vụ và công cụ bên ngoài. Thư viện Hành động bao gồm hỗ trợ cho nhiều nền tảng khác nhau, bao gồm Facebook, Eventbrite, GitHub, Jira, Gmail, Shopify, Trello, Twitter và nhiều nền tảng khác. Ví dụ: nút Bitly cho phép quy trình làm việc tự động hóa các tác vụ Bitly, ví dụ như tạo, truy xuất hoặc cập nhật liên kết Bitly.

      Là một nguồn tài nguyên bổ sung, các nút cộng đồng và tích hợp của bên thứ ba có sẵn. Người dùng cũng có thể tạo các nút của riêng họ để kết hợp chức năng tùy chỉnh hoặc tích hợp với các hệ thống nội bộ. Để biết thông tin về cách tạo nút tùy chỉnh, hãy xem tài liệu nút tùy chỉnh n8n.

      https://www.linode.com/docs/guides/how-to-use-n8n-to-automate-workflows/

      Cài đặt n8n trên Hosting cPanel

      Tạo domain có ssl.

      Vào SSL/TLS Status. Nhấn Run AutoSSL để cấp chứng chỉ cho domain. Nếu cài đặt SSL thành công sẽ hiển thị dòng màu xanh lá cây và thời hạn của chứng chỉ.

      Cấu hình Node.js App trong cPanel

      Vào Setup Node.js App trong nhóm Software. Nhấn Create Application, chọn phiên bản Node.js mới nhất > 20.nChọn thư mục gốc đúng với thư mục của domain và chế độ Development.

      Application Startup File ghi: node_modules/n8n/bin/n8n

      Để ứng dụng sẽ tự vô thư mục nodevenv sử dụng ứng dụng trong đó.

      Nhấn Create để khởi tạo ứng dụng.

      Sao chép lệnh kích hoạt môi trường Node.js từ phần đầu của trang trong phần Setup Node.js App.

      Cài đặt n8n trên hosting cPanel

      Truy cập cPanel Terminal, sau đó dán lệnh trên vào Terminal và nhấn Enter.

      Khởi tạo npm: npm init -y

      Cài đặt n8n: npm install n8n

      Biến môi trường

      N8N_EDITOR_BASE_URL = https://n8n.wpvn.xyz/

      N8N_SECURE_COOKIE = false

      WEBHOOK_URL = https://n8n.wpvn.xyz/

      Công việc lặp đi lặp lại nên cần tự động hoá

      Bấm vào Open của Application URL để mở trang web.

      Thêm Workflow

      Vào trang https://n8n.io/workflows/

      Ví dụ:

      https://n8n.io/workflows/3018-automated-content-generation-and-publishing-wordpress/

      https://n8n.io/workflows/3085-automate-seo-optimized-wordpress-posts-with-ai-and-google-sheets/

      Bấm vào Use for free, chọn copy template Json, dán vào tạo thành 1 file json, hoặc bấm Ctrl + V để dán vào Workflow.

      Tạo 1 Workflow mới, bấm vào nút … trên cùng bên phải chọn import form file và chọn file json.

      Sao đó xem những node có dấu tam giác thì chỉnh sửa thay các chính thực API.

      gỡ cài đặt n8n

      sudo npm uninstall -g n8n

      Xem có còn chạy ps -ef | grep n8n

      Để xác định chính xác vị trí của thư mục .n8n, bạn có thể chạy lệnh find ~ -type d -name “.n8n”

      Cài đặt trong Mac

      Bước 0: Mở Terminal
      Bước 1: brew install node
      Bước 2: npm install n8n -g
      Bước 3: n8n -> Hiển thị lỗi dưới đây:
      ➜ ~ n8n Phiên bản Node.js 23.11.0 của bạn hiện không được n8n hỗ trợ. Vui lòng sử dụng Node.js v18.17.0 (khuyến nghị), v20 hoặc v22 thay thế!

      Bước 4: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
      Bước 5: Đóng và mở lại terminal
      Bước 6: nvm — phiên bản
      Bước 7: nvm cài đặt 18.17.0
      Bước 8: nvm sử dụng 18.17.0
      Bước 9: npm install -g n8n
      Bước 10: n8n
      Bước 11: mở trình duyệt: http://localhost:5678/

      ứng dụng Trò chuyện đơn giản sử dụng Azure OpenAI

      Thêm nút kích hoạt: Khi nhận được tin nhắn trò chuyện.
      Thêm AI Agent. Khi bạn thêm một mô hình, có một số tùy chọn. Tôi sẽ sử dụng Azure Open AI. Để sử dụng, bạn cần thêm thông tin xác thực. Đây là curl mà tôi sử dụng trong Postman: ‘ https://myresource.openai.azure.com/openai/deployments/gpt-4o-mini/chat/completions?api-version=2024-02-xxx’ \

      Điền các phần bắt buộc như thế này:

      • tên tài nguyên: myresource
      • Khóa API: khóa API Azure của bạn
      • Phiên bản API: 2024–02-xxx

      Sau đó, bạn cần viết tên triển khai của mình ở đây (không phải tên mô hình mà là tên triển khai của bạn). Sau đó, bạn có thể chạy quy trình công việc đầu tiên của mình.

      KẾT NỐI VỚI GROQ
      Groq cung cấp quyền truy cập vào các mô hình mở như Mixtral và LLaMA với khả năng suy luận cực kỳ nhanh.

      Khi bạn mở tài khoản từ https://console.groq.com/home , bạn sẽ thấy một thông báo như thế này:

      curl https://api.groq.com/openai/v1/chat/completions -s \
      -H “Content-Type: application/json” \
      -H “Authorization: Bearer APIKEY” \
      -d ‘{ “model”: “meta-llama/llama-4-scout-17b-16e-instruct”,
      “messages”: [{ “role”: “user”,
      “content”: “Giải thích tầm quan trọng của các mô hình ngôn ngữ nhanh” }] }’
      Nếu bạn bối rối về phần “openai” trong URL, đừng lo lắng!

      n8n nodes mcp

      https://medium.com/@balci.pelin/n8n-with-mcp-13e9ba0c10c9

      Biến Raspberry Pi thành một AI Agentic RAG cục bộ bằng LLM nguồn mở

      Dùng PyTorch chuyển đổi PDF sang Markdown
      Nội dung

        Cùng bắt đầu xây dựng một tác nhân AI, cung cấp kiến ​​thức từ hướng dẫn sử dụng của tất cả các thiết bị của mình và để nó trả lời các câu hỏi của mình khi cần. Tác nhân này chạy trên Raspberry Pi của mình và luôn sẵn sàng giúp mình. Có nhiều khuôn khổ ngoài kia giúp bạn xây dựng các tác nhân AI. LlamaIndex là khuôn khổ tôi đã chọn, nhưng bạn có thể xây dựng nó bằng bất kỳ khuôn khổ tác nhân nào. Vì tôi muốn ứng dụng này chạy miễn phí, tôi đã sử dụng LLM nguồn mở cho dự án. Ollama rất tuyệt vời cho mục đích này, cho phép bạn tải xuống LLM nguồn mở.

        Trong bài viết này chúng ta đã xem xét:

        • Cách xây dựng tác nhân RAG và ReAct bằng LlamaIndex.
        • Các yếu tố cần cân nhắc khi chạy chương trình này trên máy có công suất thấp như Raspberry Pi.
        • Sử dụng Streamlit để xây dựng giao diện người dùng đơn giản cho ứng dụng.

        Chuẩn bị không gian cho hướng dẫn sử dụng

        Bắt đầu bằng cách thu thập các hướng dẫn sử dụng mà bạn muốn AI truy cập và lưu chúng vào một thư mục cụ thể. Tôi chỉ cần tải mọi thứ lên trong thư mục này: docs/user_manuals.

        Xây dựng một công cụ truy vấn từ các tài liệu

        Tiếp theo, chúng ta cần xử lý bit RAG của tác nhân AI này. Điều này bao gồm việc lấy các tệp PDF từ thư mục, đọc và phân đoạn chúng, chuyển đổi các khối thành nhúng và lưu chúng vào cơ sở dữ liệu vector. Đây là tổng quan rất nhanh về khía cạnh chuẩn bị dữ liệu của RAG và người đọc được khuyến khích tìm hiểu sâu hơn về nó. Mặc dù quá trình này nghe có vẻ phức tạp, nhưng may mắn thay, LlamaIndex cho phép chúng ta thực hiện điều này chỉ với 3 dòng mã:

        documents = SimpleDirectoryReader(“docs/user_manuals”).load_data(show_progress=True)”docs/user_manuals”).load_data(show_progress=True)
        index = VectorStoreIndex.from_documents(documents, show_progress=True)
        query_engine = index.as_query_engine()

        Tuy nhiên, trước khi xác định chỉ mục và công cụ truy vấn, mô hình LLM nhúng cần phải được thay đổi. LlamaIndex sử dụng các mô hình OpenAI theo mặc định, nhưng bạn có thể sử dụng bất kỳ mô hình nào bạn thích. Trong trường hợp của tôi, việc sử dụng mô hình nguồn mở từ Ollama có thể được thực hiện như sau:

        Settings.embed_model = OllamaEmbedding(model_name=”all-minilm:22m”)“all-minilm:22m”)

        Người đọc được khuyến khích thử nghiệm với các mô hình nhúng khác nhau. Tôi đã thành công khác nhau với những mô hình tôi đã thử, chẳng hạn nhưnomic-embed-text, nhưngall-minilm:22mcho tôi thành công nhất. Với mô hình nomic, nó thường không phân tích cú pháp và nhúng một số phần nhất định của một số tài liệu. Bạn có thể thử mã khởi động 5 dòng do LlamaIndex cung cấp để kiểm tra hiệu suất của các mô hình nhúng:LlamaIndex — LlamaIndex. Tuy nhiên, tôi quyết định không sử dụng mã đó cho dự án của mình vì tôi muốn tác nhân của mình suy luận thông qua phản hồi mà nó nhận được từ công cụ truy vấn — tôi sẽ nói thêm về điều đó sau.

        Xây dựng tác nhân ReAct

        Mộttác nhân ReAct, viết tắt của Reason + Act, là một tác nhân lý luận suy nghĩ và hành động từng bước để giải quyết một nhiệm vụ phức tạp. Khá đơn giản để tạo một tác nhân ReAct trong LlamaIndex và cung cấp cho nó các công cụ. Đầu tiên, chúng ta sẽ chuyển đổi công cụ truy vấn được xác định trước đó thành một công cụ mà tác nhân có thể sử dụng:

        user_manual_query_tool = QueryEngineTool.from_defaults(
        query_engine,
        name=”user_manual_query_tool”,”user_manual_query_tool”,
        description=(
        “A RAG engine with various user manuals of appliances.”,
        “Use a detailed plain text question as input to the tool.”),
        )

        Bước tiếp theo là xác định tác nhân ReAct, cung cấp cho nó quyền truy cập vào công cụ truy vấn hướng dẫn sử dụng:

        system_prompt = “”””””
        System prompt:

        You are an AI assistant specialized in answering questions about appliances using information from user manuals.

        1. Always rely on the **user_manual_query_tool** to retrieve information; do not use prior knowledge.
        2. If a query cannot be answered using the tool, respond with: “I cannot find this information in the user manuals provided.”
        3. Do not attempt to generate answers without using the tool.
        4. Give detailed responses to the user’s queries, explaining everything in steps.
        5. Return the response in markdown format.

        Note: The tool name is **user_manual_query_tool**, and it should be used for all queries.
        “””

        self.agent = ReActAgent.from_tools(
        tools=[user_manual_query_tool],
        verbose=True,
        context=system_prompt
        )

        Tôi cũng đã định nghĩa một lời nhắc hệ thống cho tác nhân ở trên, để tôi có được câu trả lời nhất quán cho các truy vấn của mình từ hướng dẫn sử dụng. Nếu không có lời nhắc này, đôi khi tôi thấy tác nhân trả về phản hồi từ kiến ​​thức của riêng mình, thay vì truy vấn chỉ mục kiến ​​thức.

        Ngoài ra, LlamaIndex sử dụng OpenAI LLM làm mặc định, nhưng chúng ta có thể dễ dàng thay đổi cài đặt để sử dụng Ollama:

        Settings.llm = Ollama(model=”llama3.1″)”llama3.1″)

        Tuy nhiên, tại thời điểm này, tôi bắt đầu nghi ngờ liệu điều này có thể chạy trên Raspberry Pi của tôi hay không, vì phải dựa vào llama3.1 (tham số 8b) có thể là một mô hình mạnh mẽ để chạy trên Raspberry Pi. Để kiểm tra mọi thứ, tôi đã tạo một lớp cho tác nhân:

        from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
        from llama_index.llms.ollama import Ollama
        from llama_index.embeddings.ollama import OllamaEmbedding
        from llama_index.core.agent import ReActAgent
        from llama_index.core.tools import QueryEngineTool
        import time
        import nest_asyncio

        nest_asyncio.apply()

        class UserManualAgent:
        _instance = None

        def __new__(cls, *args, **kwargs):
        if cls._instance is None:
        cls._instance = super(UserManualAgent, cls).__new__(cls, *args, **kwargs)
        return cls._instance

        def __init__(self):
        if not hasattr(self, ‘initialized’):
        Settings.embed_model = OllamaEmbedding(model_name=”all-minilm:22m”)
        Settings.llm = Ollama(model=”llama3.1″)

        documents = SimpleDirectoryReader(“docs/user_manuals”).load_data(show_progress=True)
        index = VectorStoreIndex.from_documents(documents, show_progress=True)
        query_engine = index.as_query_engine()

        user_manual_query_tool = QueryEngineTool.from_defaults(
        query_engine,
        name=”user_manual_query_tool”,
        description=(
        “A RAG engine with various user manuals of appliances.”,
        “Use a detailed plain text question as input to the tool.”),
        )

        system_prompt = “””
        System prompt:

        You are an AI assistant specialized in answering questions about appliances using information from user manuals.

        1. Always rely on the **user_manual_query_tool** to retrieve information; do not use prior knowledge.
        2. If a query cannot be answered using the tool, respond with: “I cannot find this information in the user manuals provided.”
        3. Do not attempt to generate answers without using the tool.
        4. Give detailed responses to the user’s queries, explaining everything in steps.
        5. Return the response in markdown format.

        Note: The tool name is **user_manual_query_tool**, and it should be used for all queries.
        “””

        self.agent = ReActAgent.from_tools(
        tools=[user_manual_query_tool],
        verbose=True,
        context=system_prompt
        )

        print(“done initializing agent”)
        self.initialized = True

        def query(self, question):
        print(“user query: “, question)
        start_time = time.time()
        try:
        response = self.agent.chat(question)
        response_time = time.time() – start_time
        print(“response time: “, response_time)
        except ValueError as e:
        response = “I cannot find this information in the user manuals provided.”
        print(e)
        return response

        if __name__ == “__main__”:
        agent = UserManualAgent()
        response = agent.query(“How to setup the Roborock vacuum?”)
        print(response)

        Lưu ý rằng tôi đã tạo một singleton cho lớp này, do đó các lệnh gọi riêng biệt đến hàm tạo không khởi tạo tác nhân nhiều lần.

        Tối ưu hóa tác nhân cho Raspberry Pi

        Bước tiếp theo là cài đặt Ollama và các mô hình phụ thuộc trên Raspberry Pi, kéo mã đã đề cập ở trên, cài đặt tất cả các phụ thuộc và chạy lớp để xem nó có hoạt động không. Và như tôi lo sợ, LLM đã hết thời gian chờ khi phản hồi. Tuy nhiên, tôi nên đề cập rằng tôi đã có thể chạy và trò chuyện với llama3.1 trên Raspberry Pi một mình. Tuy nhiên, nó không hoạt động hoàn toàn với tác nhân ReAct. Tôi bắt đầu thử nghiệm xung quanh với các mô hình Ollama khác nhau và các giá trị thời gian chờ và sự kết hợp cuối cùng đã hoạt động là:

        Settings.llm = Ollama(model=”tinyllama”, request_timeout=60*5)”tinyllama”, request_timeout=60*5)

        Sự kết hợp này hầu như không gây ra thời gian chờ, nhưng vẫn chậm. Đối với tôi, thời gian phản hồi nằm trong khoảng 45–60 giây. Có thể đạt được hiệu suất tốt hơn với phiên bản RAM 16 GB của Pi hoặc sử dụng SSD để lưu trữ thay vì thẻ SD và tôi có thể cân nhắc những điều này trong tương lai.

        Đây là hạn chế khi sử dụng một mô hình nhỏ hơn như TinyLlama làm tác nhân lý luận và tôi nhận ra rằng tôi có thể phải thử nghiệm với các mô hình.

        Cuối cùng tôi quyết định thay thế Ollama trong thiết lập của mình bằngOpenRoutervà sử dụng LLM nguồn mở từ đó. Nó có giới hạn về số lượng yêu cầu mà người dùng có thể thực hiện mỗi phút, nhưng là một giải pháp thay thế tuyệt vời khi bạn không có đủ tài nguyên phần cứng để chạy mô hình LLM lớn hơn.

        LlamaIndex cũng cung cấp khả năng tích hợp dễ dàng với OpenRouter. Mã cuối cùng cho lớp hướng dẫn sử dụng như sau:

        from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
        from llama_index.llms.openrouter import OpenRouter
        from llama_index.embeddings.ollama import OllamaEmbedding
        from llama_index.core.agent import ReActAgent
        from llama_index.core.tools import QueryEngineTool

        import nest_asyncio
        nest_asyncio.apply()
        import time
        from dotenv import load_dotenv
        import os
        load_dotenv()

        class UserManualAgent:
        _instance = None

        def __new__(cls, *args, **kwargs):
        if cls._instance is None:
        cls._instance = super(UserManualAgent, cls).__new__(cls, *args, **kwargs)
        return cls._instance

        def __init__(self):
        if not hasattr(self, ‘initialized’):
        Settings.embed_model = OllamaEmbedding(model_name=”all-minilm:22m”)
        llm = OpenRouter(
        api_key=os.getenv(“OPEN_ROUTER_KEY”),
        model=”meta-llama/llama-3.2-3b-instruct:free”,
        request_timeout=60*5
        )

        Settings.llm = llm

        Settings.chunk_size = 700
        Settings.chunk_overlap = 20

        documents = SimpleDirectoryReader(“docs/user_manuals”).load_data(show_progress=True)
        index = VectorStoreIndex.from_documents(documents, show_progress=True)
        query_engine = index.as_query_engine()

        user_manual_query_tool = QueryEngineTool.from_defaults(
        query_engine,
        name=”user_manual_query_tool”,
        description=(
        “A RAG engine with various user manuals of appliances.”,
        “Use a detailed plain text question as input to the tool.”),
        )

        system_prompt = “””
        System prompt:

        You are an AI assistant specialized in answering questions about appliances using information from user manuals.

        1. Always rely on the **user_manual_query_tool** to retrieve information; do not use prior knowledge.
        2. If a query cannot be answered using the tool, respond with: “I cannot find this information in the user manuals provided.”
        3. Do not attempt to generate answers without using the tool.
        4. Give detailed responses to the user’s queries, explaining everything in steps.
        5. Return the response in markdown format.

        Note: The tool name is **user_manual_query_tool**, and it should be used for all queries.
        “””

        self.agent = ReActAgent.from_tools(
        tools=[user_manual_query_tool],
        verbose=True,
        context=system_prompt
        )

        print(“done initializing agent”)
        self.initialized = True

        def query(self, question):
        print(“user query: “, question)
        start_time = time.time()
        try:
        response = self.agent.chat(question)
        response_time = time.time() – start_time
        print(“response time: “, response_time)
        except ValueError as e:
        response = “I cannot find this information in the user manuals provided.”
        print(e)
        return response

        if __name__ == “__main__”:
        agent = UserManualAgent()
        response = agent.query(“How to setup the Roborock vacuum?”)

        print(response)

        Sau khi thay đổi kích thước khối và chồng lấn khối, tôi cũng đạt được hiệu suất nhanh hơn khi nhúng tài liệu vào Raspberry Pi.

        Tạo giao diện người dùng bằng streamlit để tương tác với tác nhân

        Bước cuối cùng là tạo một giao diện người dùng nhanh bằng streamlit để tương tác với tác nhân. Đây là mã cho giao diện người dùng:

        import streamlit as st
        from user_manual_agent import UserManualAgent

        @st.cache_resource
        def initialize_agent():
        user_manual_agent = UserManualAgent()
        return user_manual_agent

        # Function to cycle through messages
        def display_interface(user_manual_agent):
        # Streamlit app
        st.title(“User Manual Agent”)
        st.write(“Ask any questions you have about your appliances :sunglasses:”)

        # Input text box for user query
        user_query = st.text_input(“Enter your question:”)

        # Button to submit the query
        if st.button(“Submit”):
        if user_query:
        with st.spinner(“Fetching response…”):
        response = user_manual_agent.query(user_query)
        st.markdown(“**Response**: \n\n”)
        st.markdown(response.response)

        else:
        st.write(“Please enter a question.”)

        user_manual_agent = initialize_agent()
        display_interface(user_manual_agent)

        Lưu ý việc sử dụng @st.cache_resourcekhi tạo tác nhân. Điều này ngăn không cho tác nhân được khởi tạo nhiều lần nếu ứng dụng được truy cập nhiều lần.

        Bây giờ bạn cũng có thể biến Raspberry Pi thành trợ lý cá nhân!

        Nguôn: https://medium.com/@muhammad.taha/turn-your-raspberry-pi-into-a-local-ai-agent-to-help-you-figure-out-your-appliances-4aea2d39ee91

        Công cụ AI hỗ trợ trong công việc và sáng tạo

        Dùng PyTorch chuyển đổi PDF sang Markdown
        Nội dung

          Các công cụ AI không cần mã đang thay đổi cuộc chơi cho các doanh nghiệp ở mọi quy mô. Các công cụ AI không cần mã là vũ khí bí mật của bạn. Chúng giống như có một thiên tài công nghệ trong nhóm của bạn, không cần lập trình phức tạp và giá cao. Cho dù bạn là một công ty khởi nghiệp nhỏ hay một công ty đã thành lập, những công cụ này đều đưa các khả năng AI tiên tiến vào tầm tay bạn. Nhưng hãy nhớ rằng chúng có thể không miễn phí mãi mãi, vì vậy tốt nhất là hãy sử dụng chúng khi bạn có thể.

          AI không cần mã chính xác như tên gọi của nó, các công cụ trí tuệ nhân tạo không yêu cầu bất kỳ kỹ năng lập trình nào để sử dụng. Hãy nghĩ về nó như việc xây dựng bằng các khối LEGO thay vì tạo ra từng viên gạch từ đầu. Bạn đang sử dụng các thành phần AI được xây dựng sẵn để tạo ra các giải pháp mạnh mẽ, mà không cần viết một dòng mã nào.

          AI truyền thống so với AI không cần mã:

          • AI truyền thống cần có chuyên môn về mã hóa, mất nhiều tháng để phát triển và tốn kém

          • AI không cần mã sử dụng giao diện trực quan, mất nhiều ngày để triển khai và phù hợp với hầu hết các ngân sách

          • AI truyền thống đòi hỏi một nhóm các nhà phát triển

          • AI không cần mã có thể được quản lý bởi bất kỳ ai hiểu được nhu cầu kinh doanh của họ

          Các nền tảng AI không cần mã thường cung cấp bản dùng thử miễn phí hoặc các gói cơ bản, vì vậy bạn có thể thử nghiệm trước khi bắt đầu hoàn toàn. Hãy nhớ: Bạn không cần phải hiểu toán học phức tạp đằng sau AI — giống như bạn không cần phải biết động cơ ô tô hoạt động như thế nào để lái xe. Tập trung vào những gì bạn muốn đạt được và để nền tảng xử lý các công việc kỹ thuật nặng nhọc. Những công cụ này đang thay đổi cuộc chơi cho các doanh nghiệp nhỏ và doanh nhân.

          Các công cụ AI không cần mã là hoàn hảo để giải quyết các thách thức hàng ngày. Hãy cùng khám phá các lĩnh vực chính mà các công cụ này có thể tạo ra sự khác biệt thực sự.

          Giải pháp dịch vụ khách hàng

          • Chatbot xử lý các yêu cầu cơ bản 24/7

          • Hệ thống trả lời email tự động

          • Phân tích tình cảm khách hàng

          • Hỗ trợ phân loại và định tuyến vé

          AI không cần mã tỏa sáng trong dịch vụ khách hàng. Hãy nghĩ về Sarah, một chủ doanh nghiệp nhỏ đã sử dụng một nền tảng không cần mã đơn giản để tạo chatbot. Hiện tại, nền tảng này xử lý 60% các truy vấn của khách hàng, giúp nhóm của cô có nhiều thời gian hơn cho các vấn đề phức tạp.

          Phân tích dữ liệu đơn giản

          • Dự đoán xu hướng bán hàng

          • Mẫu hành vi của khách hàng

          • Báo cáo phân tích thị trường

          • Dự báo tài chính

          Những công cụ này biến dữ liệu phức tạp thành thông tin chi tiết rõ ràng — không cần bằng khoa học dữ liệu! Một chủ cửa hàng địa phương gần đây đã sử dụng AI không cần mã để phát hiện các mẫu mua hàng và điều chỉnh mức tồn kho của họ, giúp tăng lợi nhuận lên 15%.

          Quản lý tài liệu

          • Xử lý biểu mẫu tự động

          • Trích xuất dữ liệu hóa đơn

          • Phân tích hợp đồng

          • Trích xuất văn bản PDF

          Hãy tạm biệt việc nhập dữ liệu thủ công. Các công cụ này có thể quét, sắp xếp và tổ chức tài liệu trong vài giây. Một công ty kế toán đã cắt giảm thời gian xử lý tài liệu của họ từ nhiều giờ xuống còn vài phút bằng cách sử dụng các công cụ AI không cần mã đơn giản.

          Quản lý nội dung

          • Kiểm duyệt hình ảnh

          • Lọc nội dung phương tiện truyền thông xã hội

          • Phân tích văn bản

          • Kiểm tra tính nhất quán của thương hiệu

          Giữ nội dung của bạn sạch sẽ và đúng thương hiệu mà không cần phải xem xét thủ công liên tục. Một người quản lý phương tiện truyền thông xã hội hiện đang kiểm duyệt hàng nghìn bình luận của người dùng hàng ngày bằng AI — những việc trước đây mất cả ngày thì giờ chỉ mất vài phút.

          Công cụ bán hàng và tiếp thị

          • Điểm dẫn đầu

          • Tối ưu hóa chiến dịch email

          • Dự đoán hiệu suất quảng cáo

          • Phân khúc khách hàng

          Tiếp thị thông minh hiện đã có thể tiếp cận với mọi người. Các doanh nghiệp nhỏ có thể cạnh tranh với những đối thủ lớn hơn bằng cách sử dụng AI để nhắm mục tiêu đúng khách hàng vào đúng thời điểm. Bạn có thể bắt đầu sử dụng các giải pháp không cần mã hóa. Chỉ cần chọn vấn đề bạn muốn giải quyết, chọn công cụ của bạn và bắt đầu. Hãy cùng tìm hiểu cách bắt đầu hành trình của bạn một cách đúng đắn.

          Hành trình chọn nền tảng

          Đầu tiên, chọn nền tảng của bạn. Hãy nghĩ về nó như việc chọn công cụ hoàn hảo cho dự án DIY của bạn. Bạn sẽ muốn cân nhắc:

          • Dễ sử dụng — Bạn có thể sử dụng mà không cần bằng khoa học máy tính không?

          • Giá cả — Có phù hợp với ngân sách của bạn không?

          • Tính năng — Nó có giải quyết được nhu cầu kinh doanh cụ thể của bạn không?

          • Hỗ trợ — Có trợ giúp khi bạn cần không?

          Sau khi bạn đã chọn nền tảng của mình, việc thiết lập rất đơn giản. Hầu hết các công cụ đều cung cấp quy trình đăng ký đơn giản, chỉ cần tạo tài khoản, xác minh email của bạn và bạn đã tham gia! Nhiều nền tảng cũng cung cấp bản dùng thử miễn phí để bạn có thể dùng thử trước khi cam kết.

          Hầu hết các công cụ AI không cần mã đều tuân theo một cấu trúc tương tự:

          • Bảng điều khiển — Trung tâm điều khiển của bạn

          • Mẫu — Các giải pháp được xây dựng sẵn mà bạn có thể sử dụng ngay

          • Mô hình AI — Các loại AI khác nhau mà bạn có thể làm việc cùng

          • Cài đặt — Nơi bạn quản lý tài khoản và tùy chọn của mình

          Bắt đầu nhỏ với thử nghiệm. Chọn một nhiệm vụ đơn giản có thể là tự động trả lời email hoặc sắp xếp tài liệu. Chạy một vài trường hợp thử nghiệm và kiểm tra kết quả cẩn thận. AI có hiểu đầu vào của bạn không? Đầu ra có như bạn mong đợi không?

          Mẹo triển khai thông minh

          Sau đây là những gì người khởi nghiệp thành công thường làm:

          • Ghi lại mọi thứ từ ngày đầu tiên

          • Bắt đầu với các dự án nhỏ, ít rủi ro

          • Kiểm tra kỹ lưỡng trước khi đưa vào hoạt động

          • Giữ cho nhóm của bạn trong vòng lặp

          • Theo dõi kết quả của bạn

          Hãy nhớ rằng bạn không cần phải hoàn hảo ngay lập tức. Hãy bắt đầu đơn giản, học hỏi trong quá trình thực hiện và xây dựng sự tự tin của bạn. Đó là vẻ đẹp của AI không cần mã nó phát triển cùng bạn!

          Các bước thực hiện thực tế

          Bạn đã sẵn sàng đưa AI không cần mã vào hoạt động chưa? Hãy cùng chia nhỏ quy trình triển khai thành các bước nhỏ, dễ thực hiện.

          Phát hiện các vấn đề kinh doanh sẵn sàng cho AI

          Bắt đầu bằng cách tìm kiếm những dấu hiệu sau:

          • Các công việc thủ công lặp đi lặp lại làm tốn thời gian của nhóm

          • Các quy trình dữ liệu nặng cần phân tích nhanh

          • Sự tắc nghẽn trong dịch vụ khách hàng

          • Nội dung cần được xem xét thường xuyên

          Chọn các vấn đề cụ thể và có thể đo lường được. Ví dụ, thay vì “cải thiện dịch vụ khách hàng”, hãy nhắm mục tiêu “giảm thời gian phản hồi email xuống 50%”.

          Tạo bản đồ quy trình của bạn

          Trước khi bắt tay vào, hãy lập sơ đồ quy trình làm việc hiện tại của bạn. Hãy nghĩ về nó như việc tạo ra một công thức nấu ăn — trước tiên bạn cần trình bày tất cả các nguyên liệu và các bước.

          Sau đây là một cách đơn giản để thực hiện:

          • Liệt kê từng bước trong quy trình hiện tại của bạn

          • Lưu ý ai xử lý từng nhiệm vụ

          • Đánh dấu các bước có thể sử dụng sự trợ giúp của AI

          • Xác định nơi quá trình bắt đầu và kết thúc

          Chọn công cụ AI của bạn

          Ghép các vấn đề của bạn với các giải pháp AI phù hợp. Hãy nghĩ về việc này giống như việc chọn đúng công cụ từ hộp công cụ:

          • Cần sắp xếp tài liệu? Hãy thử xử lý tài liệu AI

          • Bạn muốn trả lời câu hỏi của khách hàng? Hãy xem các công cụ chatbot

          • Cần phân tích hình ảnh? Hãy sử dụng công cụ thị giác máy tính

          Kết nối các dấu chấm

          Bây giờ là lúc kết nối mọi thứ lại với nhau. Hầu hết các nền tảng không cần mã đều sử dụng giao diện kéo và thả, giúp bạn dễ dàng:

          • Kết nối các nguồn dữ liệu của bạn

          • Thiết lập các kích hoạt cho thời điểm AI nên bắt đầu hoạt động

          • Tạo hành động dựa trên kết quả AI

          • Kiểm tra luồng với dữ liệu mẫu

          Kiểm tra giải pháp của bạn

          Trước khi phát trực tiếp:

          • Chạy thử nghiệm quy mô nhỏ với dữ liệu thực tế

          • Kiểm tra kết quả so với xử lý thủ công

          • Tính thời gian của quá trình từ đầu đến cuối

          • Nhận phản hồi từ người dùng cuối

          Hãy nhớ: Bắt đầu nhỏ, thử nghiệm kỹ lưỡng và mở rộng dần dần. Tốt hơn là làm đúng với một dự án nhỏ hơn là vội vã thực hiện một dự án lớn không hiệu quả.

          Thực hành là tốt nhất và Mẹo

          Bạn đã sẵn sàng để biến dự án AI không cần code của mình thành công chưa? Chúng ta hãy cùng tìm hiểu các biện pháp thiết yếu giúp bạn đi đúng hướng và tránh những sai lầm thường gặp.

          An ninh là trên hết

          • Luôn sử dụng các phương pháp xác thực mạnh mẽ

          • Cập nhật quyền truy cập thường xuyên

          • Sao lưu dữ liệu thường xuyên

          • Theo dõi các hoạt động bất thường của hệ thống

          • Kiểm tra các biện pháp an ninh hàng quý

          Dữ liệu của bạn rất quý giá — hãy đối xử với nó theo cách đó! Bắt đầu bằng cách thiết lập các biện pháp kiểm soát truy cập phù hợp và đảm bảo chỉ những người phù hợp mới có thể sử dụng các công cụ AI của bạn. Hãy nghĩ về điều đó giống như việc có một người gác cổng tại một câu lạc bộ độc quyền — họ chỉ cho phép những người quan trọng vào.

          Giữ gìn sự hợp pháp, giữ an toàn

          Quyền riêng tư dữ liệu không còn là tùy chọn nữa. Sau đây là những gì bạn cần làm:

          • Nhận được sự đồng ý rõ ràng cho việc thu thập dữ liệu

          • Thực hiện GDPR và luật bảo mật địa phương

          • Lưu giữ hồ sơ chi tiết về việc sử dụng dữ liệu

          • Tạo chính sách bảo mật đơn giản

          • Thiết lập thủ tục xóa dữ liệu

          Hãy coi chừng ví của bạn

          Kiểm soát chi phí bằng những mẹo sau:

          • Bắt đầu nhỏ và mở rộng dần dần

          • Theo dõi chặt chẽ các mẫu sử dụng

          • Đặt giới hạn chi tiêu cho các dịch vụ AI

          • Xem lại các gói giá hàng tháng

          • Cắt nhanh các tính năng không sử dụng

          Đào tạo đội ngũ của bạn

          Thành công phụ thuộc vào con người của bạn! Hãy đảm bảo:

          • Cung cấp đào tạo kiến ​​thức cơ bản về AI

          • Tạo hướng dẫn sử dụng rõ ràng

          • Thiết lập hệ thống hỗ trợ

          • Chia sẻ chiến thắng và bài học kinh nghiệm

          • Cập nhật tài liệu đào tạo

          Tránh những lỗi thường gặp này

          Đừng rơi vào những cái bẫy này:

          • Cố gắng tự động hóa mọi thứ cùng một lúc

          • Bỏ qua các giai đoạn thử nghiệm

          • Bỏ qua phản hồi của người dùng

          • Quên đo lường kết quả

          • Không có kế hoạch dự phòng

          Hãy nhớ: bắt đầu nhỏ, kiểm tra thường xuyên và tiếp tục học hỏi. Hành trình AI không cần mã của bạn là một cuộc chạy marathon, không phải chạy nước rút!

          Những câu chuyện thành công trong thế giới thực

          Bạn đã sẵn sàng để xem AI không cần mã hoạt động chưa? Hãy cùng xem các doanh nghiệp thực sự đang chiến thắng như thế nào với các công cụ này.

          Thành công bán lẻ: SmartShop UK

          Một chuỗi bán lẻ cỡ trung ở Manchester đã chuyển đổi dịch vụ khách hàng của họ bằng cách sử dụng chatbot AI không cần mã. Trong vòng ba tháng, họ:

          • Giảm thời gian phản hồi từ 24 giờ xuống còn 2 phút

          • Xử lý tự động 70% các truy vấn của khách hàng

          • Tiết kiệm 50.000 bảng Anh chi phí hỗ trợ

          • Cải thiện điểm số hài lòng của khách hàng lên 35%

          Chiến thắng của dịch vụ tài chính: Giải pháp MoneyWise

          Công ty khởi nghiệp công nghệ tài chính có trụ sở tại London này đã sử dụng AI không cần mã để xử lý tài liệu:

          • Giảm thời gian xử lý đơn xin vay từ 2 ngày xuống còn 30 phút

          • Đạt được độ chính xác 95% trong việc trích xuất dữ liệu

          • Xử lý nhiều hơn 3x đơn đăng ký với cùng một nhóm

          • Giảm chi phí hoạt động 40%

          Sản xuất: BuildRight Ltd

          Một nhà sản xuất ở Birmingham đã triển khai AI không cần mã để kiểm soát chất lượng:

          • Phát hiện 99% lỗi trước khi vận chuyển

          • Giảm lợi nhuận 80%

          • Tiết kiệm được 200.000 bảng Anh trong năm đầu tiên

          • Đào tạo nhóm của họ chỉ trong một tuần

          Mẹo từ người dùng thành công

          “Bắt đầu từ quy mô nhỏ và mở rộng quy mô”, Sarah Thompson, Giám đốc điều hành của SmartShop cho biết. “Chúng tôi bắt đầu với các câu hỏi đơn giản của khách hàng và dần dần thêm các nhiệm vụ phức tạp hơn”.

          “Đừng quên đào tạo nhóm của bạn,” James Wilson từ MoneyWise nói thêm. “Ngay cả các công cụ không cần mã cũng cần một người hiểu được quy trình kinh doanh.”

          Những câu chuyện thành công này cho thấy AI không cần mã không chỉ là sự cường điệu — nó mang lại kết quả thực sự cho các doanh nghiệp ở mọi quy mô. Chìa khóa là gì? Bắt đầu với các mục tiêu rõ ràng và chọn đúng công cụ cho nhu cầu cụ thể của bạn.

          Phần kết luận

          Các công cụ AI không cần mã đã mở ra những khả năng thú vị cho các doanh nghiệp ở mọi quy mô. Chúng đã biến việc triển khai AI phức tạp thành một quy trình đơn giản, dễ tiếp cận mà bất kỳ ai cũng có thể thành thạo. Hãy nhìn nhận thực tế, bạn không cần một nhóm các nhà khoa học dữ liệu hay một ngân sách công nghệ lớn nữa. Với nền tảng không cần mã phù hợp, bạn có thể tự động hóa dịch vụ khách hàng, phân tích dữ liệu và hợp lý hóa hoạt động chỉ bằng vài cú nhấp chuột. Đơn giản vậy thôi.

          Tương lai của AI không cần mã trông tươi sáng. Chúng ta đang thấy nhiều tính năng mạnh mẽ hơn, tích hợp tốt hơn và các giải pháp thông minh hơn xuất hiện trên thị trường mỗi ngày. Khi các công cụ này trở nên thân thiện với người dùng hơn, chúng sẽ trở nên thiết yếu đối với hoạt động kinh doanh như email và bảng tính.

          Sẵn sàng tham gia chưa? Hãy bắt đầu nhỏ với một quy trình duy nhất mà bạn muốn cải thiện. Chọn một nền tảng AI không cần mã phù hợp với nhu cầu của bạn và thử nghiệm. Bạn sẽ ngạc nhiên về tốc độ chuyển đổi hoạt động kinh doanh của mình.

          Đừng chờ đợi thời điểm hoàn hảo, thời điểm để khai thác sức mạnh của AI chính là bây giờ. Đối thủ cạnh tranh của bạn không đứng yên, và bạn cũng vậy. Hãy thực hiện bước đầu tiên ngay hôm nay và xem AI không cần mã có thể thúc đẩy thành công trong kinh doanh của bạn như thế nào.

          Những app gợi ý

          1. Làm hoạt hình cho bản vẽ

          Bạn đã bao giờ muốn thổi hồn vào những bức vẽ nguệch ngoạc của mình chưa? Hãy xem công cụ đầu tiên của chúng tôi! Chỉ cần lấy một bức vẽ rõ nét trên giấy trắng và tải lên. Giả sử chúng ta có một bản phác thảo phi hành gia — hãy tải lên và xem điều kỳ diệu xảy ra! Đầu tiên, nó sẽ tự động phát hiện nhân vật của bạn và bạn có thể dễ dàng tô sáng để làm cho nó hoàn hảo. Tiếp theo, đã đến lúc vui chơi! Bạn có thể thêm hoạt ảnh — làm cho phi hành gia của bạn nhảy một điệu nhỏ hoặc vẫy tay chào. Với các danh mục như “vui nhộn”, “nhảy” và “đi bộ”, khả năng là vô tận. Vì vậy, nếu bản vẽ của bạn đang bám đầy bụi, đã đến lúc phủi bụi và làm hoạt ảnh! Biến những bản phác thảo tĩnh thành hình ảnh động vui nhộn. sketch.metademolab.com

          2. Trình tạo văn bản thành giọng nói

          Bạn có bao giờ muốn văn bản của mình có thể tự đọc không? Bộ chuyển đổi văn bản thành giọng nói miễn phí này sẽ làm được điều đó! Chỉ cần dán văn bản của bạn vào hộp, chọn giọng mong muốn (bạn thậm chí có thể có nhiều giọng khác nhau trong tiếng Anh — thật tuyệt phải không?) và nhấn phát. Nghe có vẻ khá giống con người, đúng không? Bạn thậm chí có thể thử nghiệm với các giọng khác nhau — như tiếng Philippines — chỉ để khuấy động mọi thứ! Khi bạn hài lòng, bạn có thể tải xuống âm thanh cho bất kỳ dự án nào bạn đang thực hiện.www.text-to-speech.online

          3. Tạo ảnh chân dung

          Bạn cần ảnh chân dung chuyên nghiệp cho mạng xã hội hoặc đơn xin việc? Trình tạo ảnh chân dung AI này sẽ giúp bạn mà không cần đăng ký! Đầu tiên, hãy chọn giới tính của bạn và tải ảnh lên (có thể là ảnh bạn chụp vào mùa hè năm ngoái). Sau đó, hãy chọn nhóm tuổi và phong cách cho ảnh. Sau đó, AI tạo ra một số ảnh chân dung chuyên nghiệp tuyệt đẹp. Không phải là những gì bạn muốn? Không vấn đề gì! Chỉ cần quay lại và thử lại cho đến khi bạn thích những gì bạn thấy. Thật dễ dàng phải không?

          Trình tạo ảnh chân dung chuyên nghiệp AI miễn phí 100% (không cần đăng ký) supawork.ai

          4. Đọc các tài liệu dài

          Đọc các tài liệu dài có thể là một sự phiền toái, nhưng giờ thì không còn nữa! Với trình tóm tắt tài liệu này, tất cả những gì bạn phải làm là tải tệp PDF của mình lên, chọn kiểu tóm tắt (như dàn ý ngắn gọn hoặc chi tiết)! Chỉ trong vài giây, nó sẽ tóm tắt từng trang cho bạn. Công cụ này thực sự tiết kiệm thời gian cho sinh viên hoặc bất kỳ ai cần nắm bắt nhanh những điều cốt yếu của một tài liệu. Vì vậy, lần tới khi bạn gặp khó khăn khi đọc một tệp PDF dài, hãy để công cụ này giúp bạn!

          Documator: Công cụ tóm tắt tài liệu AI miễn phí, đơn giản của bạn.

          5. Phiên âm âm thanh và video

          Bạn có tệp âm thanh hoặc video muốn phiên âm không? Hãy sử dụng công cụ phiên âm AI của Riverside! Chỉ cần thả tệp của bạn vào, chọn “Tôi là người” và nhấp vào “bắt đầu phiên âm”. Bạn sẽ nhận được bản phiên âm chính xác ngay lập tức. Sau khi hoàn tất phiên âm, bạn có thể tải xuống dưới dạng tệp SRT để chèn phụ đề trên YouTube hoặc bất kỳ nơi nào bạn cần. Tại sao phải tốn thời gian với các dịch vụ trả phí khi công cụ miễn phí này có thể làm được việc đó?

          Phiên âm âm thanh và video miễn phí với độ chính xác 99%.

          6. Tạo Infographic

          Sẵn sàng tạo một số hình ảnh thú vị? Công cụ Infographics cho phép bạn tạo dòng thời gian, danh sách và biểu đồ trong tích tắc! Bạn được 10 thế hệ miễn phí, vì vậy hãy sử dụng chúng một cách khôn ngoan. Giả sử bạn muốn làm nổi bật sự phát triển của phương tiện truyền thông xã hội. Sau khi nhập chủ đề, bạn sẽ nhận được một dòng thời gian được thiết kế đẹp mắt ngay lập tức. Hoàn hảo cho các bài thuyết trình hoặc bài đăng trên phương tiện truyền thông xã hội!

          Trình tạo Infographic miễn phí.

          7. Tạo một sơ đồ tư duy trên các chủ đề liên quan

          Bạn tò mò về một chủ đề nào đó? Hãy làm quen với Whybot! Công cụ tiện dụng này đào sâu vào bất kỳ câu hỏi nào bạn đặt ra. Nó tạo ra một sơ đồ tư duy trên các chủ đề liên quan, cho phép bạn phóng to và thu nhỏ để có cái nhìn toàn diện. Cho dù bạn muốn biết tại sao chúng ta ngáp hay bất kỳ câu hỏi hóc búa nào khác, Whybot sẽ giúp bạn hình dung những gì bạn đang học. Hãy sẵn sàng để trở thành người bạn thông minh nhất trong phòng!

          Whybot.

          8. Tạo prompt

          Bạn muốn mở khóa toàn bộ tiềm năng của các công cụ như ChatGPT? Không cần tìm đâu xa! Trình tạo lời nhắc giúp bạn tạo lời nhắc hiệu quả cho ChatGPT, Claude và các trợ lý AI khác.

          Chỉ cần nhập vai trò bạn muốn AI thực hiện, mô tả kết quả mong muốn và thế là xong! Bạn sẽ có lời nhắc chi tiết giúp bạn có được chính xác những gì bạn đang tìm kiếm. Đây là cách tiết kiệm thời gian chắc chắn sẽ thúc đẩy sự sáng tạo của bạn!

          Trình tạo lời nhắc ChatGPT, tạo lời nhắc ChatGPT miễn phí của Prompt Hackers để xây dựng lời nhắc AI cho bất kỳ trường hợp sử dụng phức tạp nào. Chỉ cần cung cấp vai trò…

          9. Trò chuyện dựa trên nguồn của riêng bạn

          NotebookLM của Google là một viên ngọc khác cho phép bạn trò chuyện dựa trên nguồn của riêng bạn. Tải lên tài liệu, slide hoặc thậm chí là URL từ các nguồn đáng tin cậy để tạo trợ lý AI biết chính xác những gì bạn muốn. Đây không chỉ là một chatbot khác — NotebookLM cho phép trò chuyện giữa người với người được điều chỉnh theo nghiên cứu cụ thể của bạn! Hoàn hảo để động não hoặc thu thập thông tin chi tiết!

          notebooklm.google.com

          10. Tạo các trang tô màu

          Ai nói tô màu chỉ dành cho trẻ em? Tạo trang tô màu tùy chỉnh của riêng bạn với trình tạo thú vị này! Chỉ cần nhập lời nhắc, như “hòn đảo nhiệt đới” và xem nó tạo trang tô màu của bạn. Hãy in ra và tận hưởng thời gian rảnh rỗi, hoặc thậm chí rủ trẻ em tham gia — công cụ này hoàn hảo để giúp mọi người giải trí, đặc biệt là trong những chuyến đi dài!

          Sử dụng AI để tạo các trang tô màu cho trẻ em (hoặc người lớn!) về bất kỳ chủ đề nào bạn có thể tưởng tượng.

          11. Tạo danh sách phát Spotify

          Cuối cùng, nếu bạn là người yêu âm nhạc, bạn sẽ thích Chat Jams! Chỉ cần nhập thể loại nhạc bạn thích, và nó sẽ tạo danh sách phát Spotify cho bạn.

          Bạn đang thèm một chút rung cảm thư giãn hay giai điệu sôi động? Chỉ cần nhập vào, bạn sẽ khám phá ra sự kết hợp giữa những bản nhạc yêu thích quen thuộc và những nghệ sĩ mới thú vị. Đã đến lúc nhấn phát và tận hưởng nhịp điệu tùy chỉnh của bạn!

          Hãy yêu cầu tôi tạo danh sách phát nhạc trên Spotify dành riêng cho bạn nhé.

          Nguồn: https://medium.com/@masteratai/11-ai-tools-you-wont-believe-are-free-f673e1d0faa3

          Web AI

          deepseek

          11 công cụ AI bạn không tin là miễn phí

          https://medium.com/@masteratai/11-ai-tools-you-wont-believe-are-free-f673e1d0faa3

          Tạo mã Python cho truy vấn và hiển thị mã đó trên UI.

          https://medium.com/@mauryaanoop3/jupyter-agent-revolutionizing-data-analysis-with-llms-d0cbc636cf89

          1. Truy cập Space:Jupyter Agent trên HuggingFace Spaces
          2. Chọn một mẫu: Chọn một trong những mẫu có sẵn từ menu thả xuống.
          3. Viết lời nhắc: Nhập lời nhắc của bạn vào trường nhập. Ví dụ: “What’s in Data ?-> upload the data file->csv, text….”
          4. Nhấp vào “Let’s go!”: Tác nhân sẽ tạo mã Python cho truy vấn của bạn và hiển thị mã đó trên UI.
          5. Tải xuống hoặc thực thi cục bộ: Bạn có thể tải xuống tệp Jupyter Notebook đã tạo để chạy trên máy cục bộ của mình.
          6. Tải tệp lên: Bạn cần phân tích tập dữ liệu tùy chỉnh của mình? Tải tệp lên trực tiếp thông qua giao diện.

          AI miễn phí có thể tạo ứng dụng trong vài giây

          AnyChat, một HuggingFace Space của Akhaliq, giờ đây bạn có thể dễ dàng tạo ra các ứng dụng web chức năng chỉ trong vài giây với nỗ lực tối thiểu. Cho dù bạn là người mới bắt đầu hay một lập trình viên dày dạn kinh nghiệm, trình tạo mã miễn phí hỗ trợ AI này là một công cụ tuyệt vời để khám phá.

          Thực hiện theo các bước sau để tạo ứng dụng đầu tiên của bạn chỉ bằng vài cú nhấp chuột:

          Bước 1: Truy cập AnyChat Space

          Truy cậpAnyChat trên HuggingFace .

          Bước 2: Chọn Nhà cung cấp

          Từ danh sách thả xuống, hãy chọn nhà cung cấp AI bạn thích. Đối với hướng dẫn này, chúng tôi sẽ sử dụngGemini Coder.

          Bước 3: Chọn một mô hình

          Chọn mô hình bạn muốn sử dụng. Theo mặc định, Gemini Coder sử dụnggemini-2.0-flash-thinking-exp-1219 .

          Hyperbolic Coder, powered bydeepseek-ai/DeepSeek-V3.

          Bạn có thể sử dụng models miễn phí: OpenAI, Gemini, Groq, HuggingFace, DeepSeek Qwen, …

          Bước 4: Viết lời nhắc của bạn

          Nhập lời nhắc rõ ràng và súc tích mô tả ứng dụng bạn mong muốn. Ví dụ:

          “Tạo danh sách việc cần làm đơn giản với chức năng thêm/xóa.”

          Bước 5: Nhấp vào Tạo

          Nhấn nútTạovà để phép thuật xảy ra! Chỉ trong vài giây, bạn sẽ thấy mã cho ứng dụng của mình.

          Khám phá các tính năng bổ sung

          AnyChat cung cấp một số tùy chọn để nâng cao trải nghiệm lập trình của bạn:

          • Lời nhắc hệ thống : Hiểu cách AI diễn giải hướng dẫn của bạn.
          • Xem mã : Truy cập mã được tạo trực tiếp trong giao diện.
          • Lịch sử: Theo dõi các lời nhắc và kết quả trước đây của bạn.

          Bạn có thể kiểm tra ứng dụng được tạo trong chính không gian đó. Khi đã hài lòng, hãy xuất mã và sử dụng trong IDE yêu thích của bạn hoặc tích hợp vào các dự án của bạn.

          Tạo danh sách việc cần làm đơn giản

          Hãy cùng tìm hiểu cách tạo ứng dụng danh sách việc cần làm cơ bản bằng AnyChat:

          Yêu cầu: Nhập “Tạo danh sách việc cần làm đơn giản với chức năng thêm/xóa”.

          Tạo: Nhấp vào nút Tạo và đợi vài giây.

          Kiểm tra ứng dụng: Tương tác trực tiếp với danh sách việc cần làm trên không gian.

          Xuất mã: Tải mã xuống và tích hợp vào dự án của bạn.

          <!DOCTYPE html>
          <html lang=”en”>
          <head>
          <meta charset=”UTF-8″>
          <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
          <title>Simple Todo List</title>
          <style>
          body {
          font-family: sans-serif;
          margin: 0;
          background-color: #f4f4f4;
          display: flex;
          justify-content: center;
          align-items: flex-start;
          min-height: 100vh;
          padding-top: 20px;
          }

          .container {
          background-color: #fff;
          padding: 20px;
          border-radius: 8px;
          box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
          width: 100%;
          max-width: 500px;
          }

          h1 {
          text-align: center;
          margin-bottom: 20px;
          color: #333;
          }

          .input-group {
          display: flex;
          margin-bottom: 15px;
          }

          input[type=”text”] {
          flex-grow: 1;
          padding: 10px;
          border: 1px solid #ccc;
          border-radius: 4px 0 0 4px;
          font-size: 16px;
          }

          button {
          background-color: #5cb85c;
          color: white;
          border: none;
          padding: 10px 15px;
          border-radius: 0 4px 4px 0;
          cursor: pointer;
          font-size: 16px;
          transition: background-color 0.3s ease;
          }

          button:hover {
          background-color: #4cae4c;
          }

          ul {
          list-style: none;
          padding: 0;
          }

          li {
          background-color: #f9f9f9;
          padding: 10px;
          margin-bottom: 8px;
          border-radius: 4px;
          display: flex;
          align-items: center;
          justify-content: space-between;
          border: 1px solid #eee;
          }

          li span {
          flex-grow: 1;
          word-break: break-word;
          }

          .remove-btn {
          background-color: #d9534f;
          color: white;
          border: none;
          padding: 5px 10px;
          border-radius: 4px;
          cursor: pointer;
          font-size: 14px;
          margin-left: 10px;
          transition: background-color 0.3s ease;
          }

          .remove-btn:hover {
          background-color: #c9302c;
          }

          @media (max-width: 600px) {
          .container {
          padding: 15px;
          }

          input[type=”text”], button {
          font-size: 14px;
          }
          }
          </style>
          </head>
          <body>
          <div class=”container”>
          <h1>Todo List</h1>
          <div class=”input-group”>
          <input type=”text” id=”new-task” placeholder=”Add new task”>
          <button id=”add-task”>Add</button>
          </div>
          <ul id=”task-list”>

          </ul>
          </div>

          <script>
          document.addEventListener(‘DOMContentLoaded’, function() {
          const newTaskInput = document.getElementById(‘new-task’);
          const addTaskButton = document.getElementById(‘add-task’);
          const taskList = document.getElementById(‘task-list’);

          addTaskButton.addEventListener(‘click’, function() {
          const taskText = newTaskInput.value.trim();
          if (taskText !== ”) {
          addTaskToList(taskText);
          newTaskInput.value = ”;
          }
          });

          newTaskInput.addEventListener(‘keypress’, function(event) {
          if (event.key === ‘Enter’) {
          addTaskButton.click();
          }
          });

          taskList.addEventListener(‘click’, function(event) {
          if (event.target.classList.contains(‘remove-btn’)) {
          event.target.parentElement.remove();
          }
          });

          function addTaskToList(taskText) {
          const listItem = document.createElement(‘li’);
          const taskSpan = document.createElement(‘span’);
          taskSpan.textContent = taskText;
          const removeButton = document.createElement(‘button’);
          removeButton.textContent = ‘Remove’;
          removeButton.classList.add(‘remove-btn’);

          listItem.appendChild(taskSpan);
          listItem.appendChild(removeButton);
          taskList.appendChild(listItem);
          }
          });
          </script>
          </body>
          </html>

          Vậy là xong! Bây giờ bạn đã có một ứng dụng danh sách việc cần làm sẵn sàng hoạt động.

          Cho dù bạn muốn tạo nguyên mẫu ý tưởng, học lập trình hay tiết kiệm thời gian cho các tác vụ lặp đi lặp lại, AnyChat cung cấp vô số khả năng. Giao diện thân thiện với người dùng và các mô hình AI mạnh mẽ khiến nó trở thành công cụ phải thử cho cả nhà phát triển và người không phải nhà phát triển.

          Chạy DeepSeek cục bộ trong VSCode để có một AI Copilot mạnh mẽ và riêng tư

          Bước 1: Cài đặt Ollama và CodeGPT trong VSCode

          Để chạy DeepSeek cục bộ, trước tiên chúng ta cần cài đặt Ollama , cho phép chúng ta chạy LLM trên máy của mình, và CodeGPT , tiện ích mở rộng VSCode tích hợp các mô hình này để hỗ trợ viết mã.

          Cài đặt Ollama. Ollama là một nền tảng nhẹ giúp việc điều hành các trường LLM địa phương trở nên đơn giản.

          Cài đặt CodeGPT trong Visual Studio Code. Mở VSCode và điều hướng đến Extensions Marketplace (Ctrl + Shift + X hoặc Cmd + Shift + X trên macOS). Tìm kiếm “CodeGPT” và nhấp vào Cài đặt. Bạn tạo một tài khoản miễn phí tại đây: https://codegpt.co
          Sau khi cài đặt Ollama và CodeGPT, chúng ta đã sẵn sàng tải xuống và cấu hình DeepSeek để bắt đầu mã hóa bằng AI cục bộ.

          Bước 2: Tải xuống và thiết lập mô hình

          Bây giờ bạn đã cài đặt thành công cả Ollama và CodeGPT, đã đến lúc tải xuống các mô hình bạn sẽ sử dụng cục bộ.

          • Mô hình trò chuyện: deepseek-r1:1.5b , được tối ưu hóa cho các môi trường nhỏ hơn và chạy mượt mà trên hầu hết các máy tính.
          • Mô hình tự động hoàn thành: deepseek-coder:1.3b. Mô hình này sử dụng công nghệ Điền vào giữa (FIM) , cho phép đưa ra các gợi ý tự động hoàn thành thông minh khi bạn viết mã. Nó có thể dự đoán và gợi ý phần giữa của một hàm hoặc phương thức, không chỉ phần đầu hoặc phần cuối.

          1.Tải xuống Mô hình trò chuyện (deepseek-r1:1.5b)
          Để bắt đầu với mô hình trò chuyện. Mở CodeGPT trong VSCode .
          Điều hướng đến phần LLM địa phương trong thanh bên.
          Trong số các tùy chọn có sẵn, hãy chọn Ollama làm nhà cung cấp LLM địa phương.
          Chọn mô hình deepseek-r1:1.5b .
          Nhấp vào nút Tải xuống . Mô hình sẽ tự động bắt đầu tải xuống.

          Sau khi tải xuống hoàn tất, CodeGPT sẽ tự động cài đặt mô hình. Sau khi cài đặt, bạn đã sẵn sàng để bắt đầu tương tác với mô hình. Bây giờ bạn có thể dễ dàng truy vấn mô hình về mã của mình. Chỉ cần tô sáng bất kỳ mã nào trong trình soạn thảo của bạn, thêm các tệp bổ sung vào truy vấn của bạn bằng ký hiệu#và tận dụng các phím tắt lệnh mạnh mẽ như:

          /fix — Để sửa lỗi hoặc đề xuất cải tiến trong mã của bạn.
          /refactor — Để dọn dẹp và cải thiện cấu trúc mã của bạn.
          /Explain — Để có được lời giải thích chi tiết về bất kỳ đoạn mã nào.
          Mô hình trò chuyện này hoàn hảo để hỗ trợ giải đáp các câu hỏi cụ thể hoặc nhận lời khuyên về mã của bạn.

          2.Tải xuống Mô hình tự động hoàn thành (deepseek-coder:1.3b)
          Để tăng cường khả năng tự động hoàn thành mã:

          Mở Terminal trong VSCode.
          Chạy lệnh sau để kéo mô hình deepseek-coder:1.3b : ollama pull deepseek-coder:1.3b
          Lệnh này sẽ tải mô hình tự động hoàn thành xuống máy cục bộ của bạn.
          Sau khi quá trình tải xuống hoàn tất, hãy quay lại CodeGPT và điều hướng đến phần Mô hình tự động hoàn thành .
          Chọn deepseek-coder:1.3b từ danh sách các mô hình có sẵn. Sau khi chọn, bạn có thể bắt đầu viết mã. Khi bạn nhập, mô hình sẽ bắt đầu cung cấp các gợi ý mã theo thời gian thực, giúp bạn hoàn thành các hàm, phương thức và thậm chí toàn bộ khối mã một cách dễ dàng.

          Bước 3: Tận hưởng mã hóa cục bộ và riêng tư được hỗ trợ bởi AI

          Sau khi thiết lập các mô hình, giờ đây bạn có thể tận hưởng đầy đủ lợi ích khi làm việc với các công cụ mạnh mẽ này mà không cần dựa vào API bên ngoài. Bằng cách chạy mọi thứ cục bộ trên máy của bạn, bạn đảm bảo quyền riêng tư và kiểm soát hoàn toàn đối với môi trường mã hóa của mình. Không cần phải lo lắng về việc dữ liệu rời khỏi máy tính của bạn, mọi thứ đều an toàn và riêng tư.

           

          Kimi+ để tạo slide thuyết trình

          Sử dụng ai miễn phí thay cho Gamma để tạo bằng cách như sau:

          – Mở trình duyệt web của bạn và truy cập trang web https://kimi.ai/kimiplus-square.

          – Sau khi truy cập trang web, bạn sẽ thấy giao diện chính của Kimi+. Ở đây, bạn có thể tìm thấy các tính năng và công cụ khác nhau mà Kimi+ cung cấp. Lưu ý phải đăng ký tài khoản và dùng tiếng trung mới có PPT.

          – Kimi+ có thể hỗ trợ bạn trong việc tạo slide thuyết trình bằng cách cung cấp nội dung, ý tưởng, và thậm chí là gợi ý về thiết kế. Bạn có thể sử dụng các tính năng của Kimi+ để:

          • Tạo ý tưởng nội dung**: Kimi+ có thể giúp bạn hình thành ý tưởng và cấu trúc nội dung cho từng slide.
          • Cung cấp thông tin**: Kimi+ có thể cung cấp thông tin liên quan đến chủ đề thuyết trình của bạn.
          • Gợi ý thiết kế**: Kimi+ có thể gợi ý về bố cục, màu sắc, và các yếu tố thiết kế khác để làm cho slide của bạn hấp dẫn hơn.

          – Để sử dụng Kimi+, bạn có thể nhập câu hỏi hoặc yêu cầu của bạn vào khung chat. Ví dụ:

          • “Cho tôi một ý tưởng về slide đầu tiên của bài thuyết trình về nhựa sinh học.”
          • “Gợi ý một số điểm chính để đưa vào slide về lợi ích của nhựa sinh học.”
          • “Có thể giúp tôi thiết kế một slide về thực trạng ô nhiễm nhựa tại Việt Nam không?”
          • “tạo slide thuyết trình bài “….”, nội dung dựa trên file, bằng tiếng việt”

          – Sau khi nhận được thông tin và gợi ý từ Kimi+, bạn bấm tạo PPT, chọn template cho Ai tạo ra file. Sau khi xong sẽ hiện 3 nút: Download PPT, Download PDF, Edit PPT trên trang web của nó. Bạn có thể sử dụng phần mềm tạo slide như PowerPoint, Google Slides, hoặc Canva để tạo slide thực tế. Bạn có thể sao chép và dán nội dung từ Kimi+ vào phần mềm tạo slide mà bạn đang sử dụng.

          – Tùy chỉnh slide theo gợi ý của Kimi+ và theo ý tưởng của bạn. Bạn có thể chỉnh sửa bố cục, màu sắc, font chữ, và các yếu tố thiết kế khác để làm cho slide phù hợp với phong cách và chủ đề của thuyết trình.

          – Sau khi tạo xong slide, bạn có thể xem trước để kiểm tra và chỉnh sửa nếu cần. Đảm bảo rằng slide của bạn rõ ràng, mạch lạc, và truyền đạt thông tin một cách hiệu quả.

          Lưu ý: Kimi+ là một trợ lý AI và không thể tạo slide trực tiếp. Tuy nhiên, nó có thể hỗ trợ bạn trong việc cung cấp nội dung và ý tưởng để bạn tạo slide một cách hiệu quả hơn.

          Thực hành PHP tạo chatbot dùng AI local

          Dựng webserver trên macOS 15.2
          Nội dung

            Bài viết hướng dẫn dùng PHP tạo chatbot GPT cho riêng bạn bằng cách sử dụng API của OpenAI. Đầu tiên, chúng ta sẽ tạo một dự án trong Visual Studio Code và sử dụng ngôn ngữ PHP. Tiếp theo, tạo các file và thư mục cần thiết để triển khai chatbot GPT. Sau đó, chúng ta sẽ thực hiện các bước để kết nối và truy xuất vào API Chat GPT. Cuối cùng, chúng ta sẽ xây dựng giao diện người dùng cho chatbot và thực hiện việc gửi câu hỏi và hiển thị phản hồi từ GPT.
            Sau khi đã cài đặt môi trường phát triển, chúng ta sẽ tạo một dự án trong Visual Studio Code để triển khai chatbot GPT của mình. Hãy làm theo các bước sau:
            Mở Terminal trong Visual Studio Code.
            Tạo một thư mục mới cho dự án của bạn bằng cách chạy lệnh sau: mkdir chat-gpt-project
            Di chuyển vào thư mục dự án mới bằng cách chạy lệnh sau: cd chat-gpt-project
            Tạo một file mới có tên là “index.php” bằng cách chạy lệnh sau: touch index.php
            Tạo một thư mục mới có tên là “chat” bằng cách chạy lệnh sau: mkdir chat
            Di chuyển vào thư mục “chat” bằng cách chạy lệnh sau: cd chat
            Tạo một file mới có tên là “chat-api.php” bằng cách chạy lệnh sau: touch chat-api.php
            Quay trở lại thư mục gốc của dự án bằng cách chạy lệnh sau: cd ..
            Tạo một thư mục mới có tên là “images” bằng cách chạy lệnh sau: mkdir images
            Truy cập vào thư mục “images” bằng cách chạy lệnh sau: cd images
            Tải và sao chép 2 file hình ảnh từ kho lưu trữ để sử dụng làm icon và thanh tiến trình.
            Di chuyển vào thư mục gốc của dự án chatbot GPT bằng cách chạy lệnh sau: cd chat-gpt-project
            Tạo một thư mục mới có tên là “css” bằng cách chạy lệnh sau: mkdir css
            Tạo một file mới có tên là “style.css” trong thư mục “css” bằng cách chạy lệnh sau: touch css/style.css
            Tạo một thư mục mới có tên là “js” bằng cách chạy lệnh sau: mkdir js
            Tạo một file mới có tên là “script.js” trong thư mục “js” bằng cách chạy lệnh sau: touch js/script.js

            Tạo API Chat GPT

            Để triển khai chatbot GPT, chúng ta cần tạo một API để chuyển tiếp cuộc trò chuyện giữa người dùng và GPT. Hãy làm theo các bước sau:

            Mở Terminal trong Visual Studio Code.
            Di chuyển vào thư mục gốc của dự án chatbot GPT bằng cách chạy lệnh sau: cd chat-gpt-project
            Mở file “chat/chat-api.php” trong Visual Studio Code.
            Cài đặt mã PHP sau để tạo một API gửi các câu hỏi tới GPT và nhận phản hồi:

            <?php
            // Lấy dữ liệu từ request POST
            $data = json_decode(file_get_contents('php://input'), true);
            
            // Kiểm tra nếu có câu hỏi đã được gửi từ client
            if (isset($data['message'])) {
                $question = $data['message']; // Lấy câu hỏi từ request
                $response = // Gọi API GPT để lấy phản hồi dựa trên câu hỏi
            
                // Trả về phản hồi cho client
                echo json_encode(array('response' => $response));
            }
            ?>

            Lưu và đóng file “chat/chat-api.php”.
            Sau khi bạn đã tạo API, bạn sẽ có thể chuyển tiếp câu hỏi từ người dùng đến GPT và nhận phản hồi từ GPT.

            Tạo Giao Diện Người Dùng

            Sau khi đã tạo API, chúng ta sẽ tạo giao diện người dùng để người dùng có thể gửi câu hỏi và nhận phản hồi từ chatbot GPT. Hãy làm theo các bước sau:

            Mở file “index.php” trong Visual Studio Code.
            Cài đặt mã HTML và CSS sau để tạo giao diện người dùng:

            <!DOCTYPE html>
            <html>
            <head>
            <title>Chat GPT</title>
            <link rel="stylesheet" href="css/style.css">
            <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
            <script src="js/script.js"></script>
            </head>
            <body>
            <div class="container">
                <div class="row">
                    <h2><span class="emoji">🤖</span> Chat GPT</h2>
                    <div id="progress-bar" class="bar">
                        <img src="images/bar.gif">
                    </div>
                </div>
                <div class="row">
                    <div class="chat-container" id="chat-container"></div>
                </div>
                <div class="row">
                    <div class="input">
                        <input type="text" id="input-question" placeholder="Hãy đặt câu hỏi của bạn">
                    </div>
                    <div id="send-button" class="button">
                        <img src="images/arrow.gif">
                    </div>
                </div>
            </div>
            </body>
            </html>

            Lưu và đóng file “index.php”.
            Mở file “css/style.css” trong Visual Studio Code.
            Cài đặt mã CSS sau để tạo kiểu cho giao diện người dùng:

            .container {
            max-width: 400px;
            margin: 0 auto;
            padding: 20px;
            text-align: center;
            }
            .row { margin-bottom: 20px; }

            h2 { font-size: 24px; }

            .emoji { font-size: 24px; }

            .bar { display: none; }

            .chat-container { height: 200px; overflow-y: scroll; border: 1px solid #ccc; padding: 10px; }

            .input { display: inline-block; width: 80%; }

            .button { display: inline-block; width: 18%; }

            input[type=”text”] { width: 100%; padding: 10px; font-size: 14px; }

            .button img { width: 20px; height: 20px; cursor: pointer; }

            6. Lưu và đóng file “css/style.css”.
            7. Mở file “js/script.js” trong Visual Studio Code.
            8. Cài đặt mã JavaScript sau để gửi câu hỏi từ người dùng đến chatbot GPT và hiển thị phản hồi:

            ```javascript
            $(document).ready(function() {
                // Gửi câu hỏi khi nhấn Enter
                $(document).keypress(function(event) {
                    if (event.which === 13) {
                        var question = $("#input-question").val();
                        if (validateInput(question)) {
                            sendQuestion(question);
                        }
                    }
                });
            
                // Gửi câu hỏi khi nhấn nút gửi
                $("#send-button").click(function() {
                    var question = $("#input-question").val();
                    if (validateInput(question)) {
                        sendQuestion(question);
                    }
                });
            });
            
            function validateInput(question) {
                if (question === "") {
                    alert("Hãy nhập một câu hỏi!");
                    return false;
                }
                return true;
            }
            
            function sendQuestion(question) {
                $("#progress-bar").show();
            
                $.ajax({
                    url: "/chat/chat-api.php",
                    method: "POST",
                    data: JSON.stringify({ "message": question }),
                    contentType: "application/json",
                    success: function(response) {
                        var reply = JSON.parse(response).response;
                        addToChat(question, reply);
                        clearInput();
                        scrollToEnd();
                        $("#progress-bar").hide();
                    }
                });
            }
            
            function addToChat(question, reply) {
                var chatContainer = document.getElementById("chat-container");
                chatContainer.innerHTML += "<p><strong>Tôi:</strong> " + question + "</p>";
                chatContainer.innerHTML += "<p><strong>GPT:</strong> " + reply + "</p>";
            }
            
            function clearInput() {
                $("#input-question").val("");
            }
            
            function scrollToEnd() {
                var chatContainer = document.getElementById("chat-container");
                chatContainer.scrollTop = chatContainer.scrollHeight;
            }

            Lưu và đóng file “js/script.js”.
            Sau khi hoàn thành các bước trên, bạn đã tạo thành công giao diện người dùng để người dùng có thể tương tác với chatbot GPT.

            Gửi Câu Hỏi Cho GPT

            Để gửi câu hỏi từ người dùng đến chatbot GPT, chúng ta sẽ sử dụng API mà chúng ta đã tạo trước đó. Hãy làm theo các bước sau:

            Mở file “chat/chat-api.php” trong Visual Studio Code.
            Thay thế dòng code sau:
            $response = // Gọi API GPT để lấy phản hồi dựa trên câu hỏi
            bằng đoạn code sau:

            $apiKey = “YOUR_API_KEY”;
            $url = “https://api.openai.com/v1/chat/completions”;
            $headers = [
            “Content-Type: application/json”,
            “Authorization: Bearer ” . $apiKey
            ];
            $data = [
            “messages” => [
            [
            “role” => “system”,
            “content” => “You are a helpful assistant”
            ],
            [
            “role” => “user”,
            “content” => $question
            ] ] ];
            $options = [
            “http” => [
            “header” => implode(“\r\n”, $headers),
            “method” => “POST”,
            “content” => json_encode($data)
            ] ];
            $context = stream_context_create($options);
            $response = file_get_contents($url, false, $context);
            $response = json_decode($response, true)[“choices”][0][“message”][“content”];
            Thay thế “YOUR_API_KEY” bằng API key của bạn từ OpenAI.
            Lưu và đóng file “chat/chat-api.php”.
            Sau khi bạn đã thay đổi API key trong mã PHP, chatbot GPT của bạn đã sẵn sàng nhận câu hỏi từ người dùng.

            Hiển Thị Phản Hồi Từ GPT

            Sau khi chatbot GPT nhận câu hỏi từ người dùng, chúng ta sẽ hiển thị phản hồi từ GPT trên giao diện người dùng. Hãy làm theo các bước sau:

            Mở file “js/script.js” trong Visual Studio Code.
            Thay thế dòng code sau:
            addToChat(question, reply);
            bằng đoạn code sau:

            addToChat(question, reply[“content”]);
            Lưu và đóng file “js/script.js”.
            Sau khi bạn đã thay đổi mã JavaScript, chatbot GPT của bạn sẽ hiển thị phản hồi từ GPT trên giao diện người dùng.
            Nguồn: https://www.toolify.ai/vi/ai-news-vn/hng-dn-tch-hp-api-openai-to-chatbot-gpt-vi-php-989049

            Xây dựng một chatbot AI để thành công với khách hàng

            https://getstream.io/blog/ai-chatbot-customer-success/

             

            Dùng Python chuyển đổi PDF sang Markdown

            Dùng PyTorch chuyển đổi PDF sang Markdown
            Nội dung

              PDF là các bài báo nghiên cứu dày đặc hoặc các tài liệu chứa đầy bảng, hình ảnh và siêu dữ liệu. Đối với bất kỳ ai trong thế giới AI — đặc biệt là những người tinh chỉnh các mô hình ngôn ngữ lớn (LLM) hoặc xây dựng các hệ thống truy xuất kiến ​​thức như RAG (Retrieval-Augmented Generation) — việc trích xuất dữ liệu phù hợp là rất quan trọng.

              Dữ liệu đầu vào cho đường ống RAG Retrieval Augmented Generation có thể có nhiều loại, nhưng đầu vào phổ biến nhất là PDF. Không giống như HTML, JSON hoặc Markdown có cấu trúc, PDF là tài liệu không có cấu trúc . Vì vậy, ngay cả trước khi chúng ta phân đoạn dữ liệu từ các tài liệu PDF, chúng ta cần phân tích cú pháp như trong hình trên.

              Dùng Python chuyển đổi PDF sang Markdown

              Chúng ta thấy Chunking, một phần của bước thu thập dữ liệu. Thu thập dữ liệu không hoàn tất nếu không có chunking, nhúng và lưu trữ trong Vector DB.

              Phân tích cú pháp PDF

              Phân tích PDF là trích xuất và diễn giải thông tin từ các tệp PDF (Định dạng tài liệu di động). Nó bao gồm việc phân tích cấu trúc và nội dung của tệp PDF để trích xuất thông tin có ý nghĩa, chẳng hạn như văn bản, hình ảnh, bảng và siêu dữ liệu.

              Mục đích của việc phân tích cú pháp PDF có thể là nhiều mục đích như tìm kiếm văn bản và chuyển đổi PDF thành tài liệu có cấu trúc như HTML, Markdown, v.v. Tuy nhiên, mục đích của chúng tôi ở đây chủ yếu là trích xuất thông tin có giá trị để đào tạo LLM hoặc cho RAG. Vì vậy, chúng tôi sẽ trích xuất văn bản, bảng, hình ảnh, đồ họa và siêu dữ liệu.

              Những thách thức với việc phân tích PDF

              Trong khi các tài liệu HTML là các biểu diễn phân cấp với các thẻ được xác định rõ ràng như <img> hoặc <title>, cấu trúc bên trong của các tài liệu PDF được tối ưu hóa để duy trì tính nhất quán về mặt hình ảnh. Nói cách khác, PDF bao gồm một loạt các hướng dẫn để hiển thị các ký hiệu. Điều này tạo ra một cấp độ thách thức hoàn toàn mới khi xử lý các tài liệu PDF.

              Thách thức đầu tiên là xác định bố cục của trang. Thách thức thứ hai là trích xuất các loại dữ liệu khác nhau như bảng, hình ảnh hoặc văn bản từ pdf.

              Định dạng PDF so với HTML

              Với thách thức khi xử lý tài liệu PDF so với tài liệu có cấu trúc như JSON hoặc HTML, một câu hỏi tự nhiên có thể nảy sinh là tại sao chúng ta cần PDF. Một số ưu điểm được nêu bật trong bảng bên dưới và được giải thích thêm ở bên dưới:

              Dùng Python chuyển đổi PDF sang Markdown

              Nói ngắn gọn, PDF an toàn và dễ truy cập bằng mọi thiết bị và hệ điều hành. Chúng dễ nén thành kích thước thuận tiện. Chúng dễ quét và do đó, lý tưởng để in. Không giống như HTML mất định dạng trên các trình duyệt hoặc hệ điều hành, PDF giữ nguyên định dạng của chúng.

              PDF được sử dụng để bảo toàn định dạng và do đó được sử dụng khi cần tuân theo các bố cục cứng nhắc (nghĩ đến các biểu mẫu). Chúng chủ yếu được sử dụng khi nội dung cần được sử dụng thay vì chỉnh sửa. Ví dụ bao gồm tài liệu đọc khóa học, báo cáo công ty, v.v. có thể dễ dàng in và phân phối. Vì vậy, việc phân tích PDF trở thành một bước tất yếu để chuẩn bị dữ liệu cung cấp cho các đường ống LLM và RAG.

              Phương pháp phân tích PDF

              Có ba loại phương pháp phân tích cú pháp PDF rộng dựa trên cách tiếp cận của chúng tôi đối với cách chúng tôi xử lý PDF. Chúng là,

              Phương pháp dựa trên quy tắc

              Phân tích cú pháp dựa trên quy tắc cũng được gọi là dựa trên mẫu. Nó tuân theo các quy tắc được xác định trước để trích xuất thông tin dựa trên các mẫu hoặc vị trí.

              Một ví dụ hay về việc phân tích cú pháp dựa trên quy tắc là phân tích biểu mẫu. Ví dụ, một tổ chức có thể sử dụng mẫu chuẩn để đăng ký nhân viên mới. Phân tích cú pháp dựa trên quy tắc sẽ hiệu quả trong trường hợp sử dụng này. Một ví dụ hay khác có thể là trích xuất dữ liệu từ hóa đơn và cập nhật chi phí vào cơ sở dữ liệu nội bộ.

              Phương pháp dựa trên đường ống

              Các phương pháp dựa trên đường ống chia nhỏ tác vụ phân tích cú pháp pdf thành một loạt các bước hoặc tác vụ. Ví dụ, bước đầu tiên có thể là sửa độ mờ hoặc hướng của trang. Bước thứ hai có thể thực hiện phân tích bố cục của cả phân tích cấu trúc trực quan và ngữ nghĩa, xác định vị trí của hình ảnh, bảng và văn bản. Ví dụ, trang có thể là văn bản hai cột thay vì một cột. Bước thứ ba sau đó có thể trích xuất bảng, văn bản và hình ảnh từ bố cục đã xác định. Bước cuối cùng có thể là tích hợp kết quả đã xác định để khôi phục trang thành định dạng HTML hoặc Markdown.

              Dùng Python chuyển đổi PDF sang Markdown

              Phương pháp dựa trên học tập

              Chúng dựa trên các mô hình học máy hoặc học sâu. Giống như bất kỳ phương pháp học nào khác, chúng cần một số dữ liệu để đào tạo và phát triển mô hình. Chúng có thể được chia thành ba loại, cụ thể là dựa trên học sâu và dựa trên mô hình nhỏ.

              Dùng Python chuyển đổi PDF sang Markdown

              Một số phương pháp tiếp cận nổi tiếng được thể hiện trong hình trên. Chúng bao gồm Mạng nơ-ron tích chập (CNN), các mô hình Nhận dạng ký tự quang học như Tesseract từ Google, Table Transformer từ Microsft và các thuật toán Phát hiện và phân đoạn như Mask R-CNN để phát hiện bố cục. Hoặc có thể sử dụng một mô hình phân loại tài liệu đơn giản để phân loại loại tài liệu sau đó có thể được xử lý thêm bằng một đường ống.

              Phương pháp kết hợp.

              Đúng như tên gọi, phương pháp này kết hợp các phương pháp dựa trên quy tắc và phương pháp học tập để tận dụng tối đa cả hai phương pháp.

              Sự đánh đổi cần cân nhắc
              Khi lựa chọn phương pháp xây dựng quy trình phân tích cú pháp PDF, một số cân nhắc chính bao gồm độ phức tạp của tài liệu, sức mạnh tính toán mà chúng ta có và yêu cầu về độ trễ của hệ thống.

              Dùng PyTorch chuyển đổi PDF sang Markdown

              Tôi đã sử dụng nhiều công cụ trực tuyến để chuyển đổi tài liệu PDF sang định dạng Markdown, nhưng không có công cụ nào có thể so sánh vớiMarker.

              Cùng với chuyển đổi Markdown cơ bản, nó định dạng bảng, chuyển đổi hầu hết các phương trình sang latex, trích xuất và lưu trữ hình ảnh.

              Theokho lưu trữ GitHubcủa Marker , bạn cần cài đặt:

              Dùng Python chuyển đổi PDF sang Markdown

              Để cài đặt PyTorch, hãy truy cậptrang web chính thức của PyTorch và bạn sẽ thấy hình ảnh tương tự như bên trên:

              Bạn có thể điều chỉnh các tùy chọn đó để xem tùy chọn nào phù hợp nhất với hệ thống của bạn. Khi đã có lệnh, Windows 11 hãy mở PowerShell hoặc Command Prompt và dán lệnh của bạn vào đó.

              Đây là lệnh tôi đã sử dụng để cài đặt PyTorch:

              pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu118

              Sẽ mất một thời gian để tải xuống và cài đặt vì tệp chính có dung lượng lên tới 2,7 GB. Sau vài phút, PyTorch sẽ được cài đặt. Bây giờ, các điều kiện tiên quyết đã xong. Tiếp theo, bạn có thể tiếp tục và chuyển sang phần Marker thực tế. Bạn có thể sao chép dự án Marker trên hệ thống cục bộ của mình bằng lệnh sau: git clone https://github.com/VikParuchuri/marker.git

              Chúng tôi đã sao chép kho lưu trữ nhưng vẫn không thể chuyển đổi tệp PDF sang định dạng Markdown vì chúng tôi chưa cài đặt Marker. Bên ngoài kho lưu trữ GitHub Marker mới được sao chép, hãy tạo một môi trường mới để chuyển đổi tệp PDF sang Markdown.

              python -m venv myenv

              Thao tác này sẽ kích hoạt môi trường mới được tạo.

              myenv\Scripts\activate

              cài đặtmarker-pdfbằng trình quản lý góipip.

              pip install marker-pdf

              Bây giờ chúng ta đã sẵn sàng để chuyển đổi tài liệu PDF sang tệp Markdown! Để chuyển đổi PDF sang Markdown, chúng ta cần hai thứ:

              Đường dẫn đầu vào của PDF
              Đường dẫn đầu ra
              Bởi vì lệnh chuyển đổi có nội dung tương tự như sau:

              mark_single “input_path” “output_path” – batch_multiplier 2 – max_pages 12

              Do đó, bên trong thư mục dự án GitHub đã sao chép, tôi sẽ tạo hai thư mục: pdf: Thư mục đầu vào của tôi, đầu ra: Thư mục đầu ra của tôi

              marker_single “D:/projects/marker-pdf/marker/pdfs/Get_Started_With_Smallpdf.pdf” “D:/projects/marker-pdf/marker/output” – batch_multiplier 2 – max_pages 12

              Sau khi lệnh được thực thi, Marker sẽ bắt đầu chuyển đổi và lưu Markdown vào thư mục đầu ra. Điều tuyệt vời về Marker là nó trích xuất tất cả hình ảnh liên quan đến PDF và lưu trữ cùng với tệp .md (Markdown) chính.

              Nguồn: https://medium.com/@sumsourabh14/this-is-how-i-convert-pdf-to-markdown-379ddb6e4405

              Sử dụng PyMuPDF4LLM

              Một công cụ nhanh chóng trở thành lựa chọn hàng đầu của tôi cho mọi thứ liên quan đến PDF. Để bắt đầu, hãy đảm bảo cài đặt PyMuPDF4LLM và các gói cần thiết khác để llama_index tương thích với quy trình làm việc LLM.

              Nhưng các tính năng chính của PyMuPDF4LLM có thể được tóm tắt như sau:

              • Trích xuất văn bản: Trích xuất nội dung theo định dạng Markdown.
                Phân đoạn: Hỗ trợ thêm siêu dữ liệu, bảng và danh sách hình ảnh vào nội dung được trích xuất.
              • Trích xuất hình ảnh: Cung cấp các tùy chọn để xác định kích thước, độ phân giải và định dạng hình ảnh.
              • Nhúng hình ảnh: Hình ảnh được nhúng trực tiếp vào đầu ra Markdown.
              • Trích xuất từ: Cho phép trích xuất chính xác các từ trong PDF.
                Trích xuất Markdown cơ bản

              Bước đầu tiên bao gồm việc chuyển đổi tệp PDF sang định dạng Markdown. Phương pháp này đơn giản hóa việc làm việc với văn bản, đặc biệt là trong các thiết lập LLM và RAG, bằng cách giúp định dạng và xử lý trước nội dung dễ dàng hơn.

              Đầu tiên hãy cài đặt PyMuPDF4LLM bằng pip:
              pip install pymupdf4llm
              Trường hợp sử dụng 1: Trích xuất Markdown cơ bản
              Cái này thì đơn giản: bạn có một tệp PDF và chỉ muốn nội dung ở định dạng sạch, thân thiện với Markdown. PyMuPDF4LLM có thể trích xuất văn bản, hoàn chỉnh với tiêu đề, danh sách và các định dạng khác, giúp bạn dễ dàng làm việc.

              import pymupdf4llm

              # Trích xuất nội dung PDF dưới dạng Markdown
              md_text = pymupdf4llm.to_markdown( “input.pdf” )
              print (md_text[: 500 ]) # In 500 ký tự đầu tiên

              Giải thích : tôi đã sử dụng PyMuPDF4LLM để trích xuất nội dung của một bài nghiên cứu thành định dạng Markdown. Tại sao lại là Markdown? Định dạng này lý tưởng để tinh chỉnh các mô hình vì nó giữ nguyên cấu trúc và định dạng, điều này có thể rất quan trọng để tạo ra các phản hồi mạch lạc từ LLM.

              Xem các phương pháp có sẵn

              Sau khi tải thư viện, bạn nên kiểm tra tất cả các phương thức có sẵn pymupdf4llmđể hiểu rõ khả năng của thư viện.

              dir(pymupdf4llm)

              Lưu Markdown vào một tệp

              Việc lưu trữ Markdown đã trích xuất trong một tệp có thể hữu ích cho việc phân tích sau này hoặc tích hợp vào các quy trình công việc khác.

              import pathlib

              pathlib.Path(“resume.md”).write_text(md_text)

              Giải thích : Ở đây, chúng ta sử dụng pathlibđể lưu md_textnội dung vào một resume.mdtệp. Tệp Markdown này có thể truy cập để xử lý hoặc chia sẻ thêm.

              import pymupdf4llm
              import pathlib

              md_text = pymupdf4llm.to_markdown( “bengio03a.pdf” )
              pathlib.Path( “output.md” ).write_bytes(md_text.encode())
              in ( “Markdown đã lưu vào output.md” )

              Lưu trữ dữ liệu đã trích xuất của bạn trong Markdown cho phép cộng tác hoặc xem xét dễ dàng, đặc biệt là khi chuẩn bị dữ liệu để tinh chỉnh LLM. Tính linh hoạt trong việc lưu trữ làm cho nó hoàn hảo để xây dựng các tập dữ liệu theo từng bước.

              Trích xuất các trang cụ thể

              Nếu bạn chỉ cần nội dung từ các trang cụ thể, PyMuPDF4LLM cho phép trích xuất có chọn lọc bằng cách chỉ định số trang.

              import pymupdf4llm

              # Chỉ trích xuất trang 10 và 11
              md_text = pymupdf4llm.to_markdown( “bengio03a.pdf” , pages=[ 10 , 11 ])
              print (md_text[: 500 ]) # In 500 ký tự đầu tiên
              Tính năng này đặc biệt hữu ích khi xử lý các tài liệu lớn. Ví dụ, việc trích xuất các chương hoặc phần cụ thể giúp dễ dàng đào tạo LLM chỉ về thông tin có liên quan nhất.

              Tích hợp với LlamaIndex

              PyMuPDF4LLM cũng hỗ trợ trích xuất dữ liệu tương thích với LlamaIndex, giúp nó phù hợp với các dự án yêu cầu lập chỉ mục tài liệu để xử lý dựa trên LLM

              !pip install llama_index

              llama_reader = pymupdf4llm.LlamaMarkdownReader()
              dir(llama_reader)

              llama_docs = llama_reader.load_data(“/content/Dhanush_kumar_Resume.pdf”)
              print(f”Số lượng tài liệu LlamaIndex : {len(llama_docs)}”)
              print(f”Nội dung của tài liệu đầu tiên :{llama_docs[0].text[:100]}”)

              Giải thích :

              Sau khi cài đặt llama_index, chúng ta sử dụng LlamaMarkdownReaderPyMuPDF4LLM.
              Phương pháp này load_datachuyển đổi PDF sang định dạng tương thích trực tiếp với LlamaIndex, một công cụ thường được sử dụng để xây dựng đường ống dữ liệu LLM.
              llama_docslưu trữ dữ liệu đã xử lý, trong đó mỗi tài liệu có thể được kiểm tra về chất lượng và khả năng tương thích.

              Trích xuất hình ảnh

              PDF thường chứa hình ảnh cùng với văn bản. Sử dụng PyMuPDF4LLM, chúng ta có thể trích xuất những hình ảnh này và lưu chúng ở định dạng và vị trí đã chỉ định.

              md_text_images = pymupdf4llm.to_markdown(
              “/content/Dhanush_kumar_Resume.pdf”,
              page_chunks=True,
              write_images=True,
              image_path=”/content/images”,
              image_format=”png”
              )

              Giải thích :

              write_images=True: Cho phép trích xuất hình ảnh từ PDF.
              image_pathvà image_formatchỉ định nơi lưu hình ảnh và định dạng nào ( pngtrong trường hợp này).
              Mã này chụp ảnh cùng với dữ liệu văn bản, hữu ích cho các tài liệu đa phương tiện.

              Phân chia dữ liệu với siêu dữ liệu

              Đối với các tệp PDF lớn hơn hoặc các tài liệu phức tạp, việc chia nhỏ nội dung có thể giúp xử lý hiệu quả hơn. Ngoài ra, PyMuPDF4LLM cho phép xử lý siêu dữ liệu với từng phần.

              md_text_chunks = pymupdf4llm.to_markdown (
              “/content/Dhanush_kumar_Resume.pdf” ,
              page_chunks = True
              )
              md_text_chunks [ 0 ] Giải thích : Bằng cách thiết lập page_chunks=True, tài liệu được chia thành các phần, với mỗi phần được xử lý riêng biệt. Điều này đặc biệt hữu ích trong bối cảnh RAG, nơi nội dung được phân đoạn cải thiện hiệu suất truy xuất.

              Trích xuất cấp độ từ với siêu dữ liệu Metadata

              Trong một số trường hợp sử dụng, việc trích xuất văn bản ở cấp độ từ là điều cần thiết, đặc biệt là khi cần phân tích chi tiết, chẳng hạn như phân tích tình cảm hoặc nhận dạng thực thể.

              md_text_words = pymupdf4llm.to_markdown(
              “/content/Dhanush_kumar_Resume.pdf”,
              page_chunks=True,
              write_images=True,
              image_path=”images”,
              image_format=”png”,
              extract_words=True
              )
              md_text_words[0][“words”][:100]

              Giải thích :

              extract_words=True chỉ rõ rằng văn bản phải được trích xuất ở cấp độ từ, thêm siêu dữ liệu như vị trí từ và vị trí trang.
              Điều này cho phép kiểm soát nội dung chi tiết hơn và hỗ trợ quy trình phân tích văn bản nâng cao.

              Trích xuất bảng

              Nếu tệp PDF của bạn chứa bảng, bạn cũng có thể trích xuất các bảng này, giúp đơn giản hóa việc truy xuất dữ liệu trong các tài liệu có nhiều bảng như báo cáo hoặc bài nghiên cứu.

              md_text_tables = pymupdf4llm.to_markdown(
              “/content/Dhanush_kumar_Resume.pdf”,
              page_chunks=True,
              write_images=True,
              image_path=”images”,
              image_format=”png”,dpi = 200,
              )

              Giải thích : PyMuPDF4LLM trích xuất các bảng bằng cách chuyển đổi chúng sang các định dạng tương thích với Markdown. Điều này có giá trị trong các bối cảnh mà dữ liệu có cấu trúc là cần thiết, chẳng hạn như trong khoa học dữ liệu hoặc tạo báo cáo.
              PyMuPDF4LLM là một công cụ mạnh mẽ để trích xuất nội dung từ PDF ở nhiều định dạng khác nhau, cho phép xử lý tài liệu nhanh chóng và hiệu quả cho môi trường LLM và RAG. Từ trích xuất văn bản và hình ảnh đến phân tích cấp độ từ và chuyển đổi bảng, PyMuPDF4LLM cung cấp một bộ công cụ linh hoạt phù hợp với nhiều ứng dụng AI và khoa học dữ liệu. Hướng dẫn này cung cấp cái nhìn toàn diện về các khả năng của PyMuPDF4LLM, thiết lập nền tảng để tạo các đường ống dữ liệu có cấu trúc tốt và sẵn sàng sử dụng.

              https://medium.com/@danushidk507/using-pymupdf4llm-a-practical-guide-for-pdf-extraction-in-llm-rag-environments-63649915abbf

              https://python.plainenglish.io/why-pymupdf4llm-is-the-best-tool-for-extracting-data-from-pdfs-even-if-you-didnt-know-you-needed-7bff75313691

              Ollama-OCR hiện đã có sẵn dưới dạng gói Python

              Bản cập nhật này giúp tích hợpOllama-OCRvào các ứng dụng, quy trình làm việc hoặc tập lệnh tự động hóa hiện có của bạn dễ dàng hơn bao giờ hết. Chỉ với một vài dòng mã, giờ đây bạn có thể tận dụng các khả năng OCR tiên tiến trực tiếp trong Python.

              Các tính năng chính:

              1. Nhiều mô hình tầm nhìn

              Chọn mẫu phù hợp với nhu cầu của bạn:

              • LLaVA 7B: Nhẹ và nhanh để trích xuất văn bản theo thời gian thực.
              • Llama 3.2 Vision: Độ chính xác cao cho các bố cục phức tạp và văn bản chi tiết.
              • Hoặc bất kỳ mô hình tầm nhìn nào khác có sẵn trên Ollama

              2. Định dạng đầu ra linh hoạt

              Ollama-OCR hỗ trợ nhiều định dạng đầu ra khác nhau để phù hợp với nhiều trường hợp sử dụng khác nhau:

              • Markdown: Giữ nguyên định dạng có cấu trúc như tiêu đề, danh sách và dấu đầu dòng.
              • Văn bản thuần túy: Trích xuất văn bản sạch, chưa định dạng.
              • JSON: Đầu ra có cấu trúc, dễ đọc bằng máy để tích hợp dễ dàng.
              • Định dạng có cấu trúc: Trích xuất và sắp xếp các bảng và nội dung theo thứ bậc.
              • Cặp khóa-giá trị: Thích hợp cho việc trích xuất biểu mẫu, biên lai hoặc dữ liệu có nhãn.

              3. Ngoại tuyến và Riêng tư

              Dữ liệu của bạn vẫn được lưu trữ cục bộ. Ollama-OCR xử lý hình ảnh ngoại tuyến, đảm bảo thông tin nhạy cảm của bạn được bảo mật.

              Để bắt đầu sử dụng Ollama-OCR, bạn chỉ cần cài đặt gói bằng pip:

              pip install ollama-ocr

              Đảm bảo máy chủ Ollama đang hoạt động và các mô hình cần thiết đã được cài đặt để tối đa hóa trải nghiệm OCR của bạn.

              ollama pull llama3.2-vision:11b

              Cách sử dụng đơn giản và nâng cao

              Sau đây là một ví dụ nhanh để bạn bắt đầu:

              from ollama_ocr import OCRProcessor

              # Initialize OCR processor
              ocr = OCRProcessor(model_name=’llama3.2-vision:11b’) # You can use any vision model available on Ollama

              # Process an image
              result = ocr.process_image(
              image_path=”path/to/your/image.png”,
              format_type=”markdown” # Options: markdown, text, json, structured, key_value
              )
              print(result)

              # Hóa đơn #1024

              ## Thanh toán cho:

              – Really Great Company

              ## Thanh toán cho:

              – Avery Davis
              123 Anywhere St., Any City
              123 456 7890

              ## Thông tin tài khoản ngân hàng:

              – Ngân hàng: Really Great Bank
              – Tên tài khoản: John Smith
              – BSB: 000 000
              – Số tài khoản: 0000 0000

              ## Chi tiết hóa đơn:

              ### Mô tả:
              – Kế hoạch nội dung: $200,00
              – Viết bản sao: $100,00
              – Thiết kế trang web : $250,00
              – Phát triển trang web: $500,00
              – SEO: $200,00

              ### Tổng cộng tạm thời: $1.250,00 (giảm giá 30%)
              – Tổng cộng: $875,00

              ## Điều khoản thanh toán:

              – Thanh toán phải được thực hiện trong vòng 14 ngày làm việc kể từ ngày xuất hóa đơn.
              – Vui lòng gửi tiền chuyển khoản đến hello@reallygreatsite.com.

              # Cảm ơn bạn đã hợp tác kinh doanh.

              Các trường hợp sử dụng

              Xử lý hóa đơn : Tự động trích xuất các thông tin chi tiết như tên nhà cung cấp, số tiền và ngày thành các cặp khóa-giá trị cho phần mềm kế toán.
              Trích xuất bảng : Trích xuất dữ liệu có cấu trúc từ các bảng trong tài liệu được quét thành định dạng JSON hoặc CSV.
              Hệ thống quản lý nội dung : Tích hợp OCR để lập chỉ mục các tệp hình ảnh nhằm dễ dàng tìm kiếm và truy xuất.
              Phân tích biểu mẫu : Trích xuất các trường từ biểu mẫu được quét thành dữ liệu có nhãn cho các hệ thống phụ trợ.
              Bài báo nghiên cứu : Trích xuất văn bản từ sơ đồ, biểu đồ và bảng trong các bài báo học thuật có hình ảnh để phân tích thêm.

              5 trường hợp sử dụng tích hợp hàng đầu cho Ollama-OCR

              1.Hệ thống quản lý tài liệu
              Nâng cao các công cụ như SharePoint hoặc Google Drive bằng cách trích xuất và lập chỉ mục văn bản có thể tìm kiếm từ các tài liệu được quét.
              2.Phần mềm kế toán
              Tự động trích xuất dữ liệu từ hóa đơn và biên lai để điền vào các trường trong các nền tảng như QuickBooks hoặc Xero.
              3.Nền tảng thương mại điện tử
              Trích xuất thông tin chi tiết sản phẩm từ danh mục dựa trên hình ảnh để tự động tạo danh sách cho Shopify hoặc WooCommerce.
              4.Ứng dụng chăm sóc sức khỏe
              Số hóa hồ sơ bệnh án và đơn thuốc để tích hợp vào hệ thống Hồ sơ bệnh án điện tử (EMR).
              5.Chatbot hỗ trợ AI
              Cho phép chatbot diễn giải và phản hồi một cách thông minh đối với văn bản được trích xuất từ ​​hình ảnh do người dùng tải lên.

              Mở khóa những khả năng mới với Ollama-OCR

              Với tính linh hoạt, dễ sử dụng và khả năng mạnh mẽ, Ollama-OCR là giải pháp tối ưu của bạn để tích hợp OCR vào bất kỳ quy trình làm việc nào. Cho dù bạn đang quản lý tài liệu, tự động hóa quy trình hay xây dựng các ứng dụng sáng tạo, gói Python này cho phép bạn trích xuất và sử dụng văn bản theo cách chưa từng có.

              nguồn: https://medium.com/@mauryaanoop3/ollama-ocr-now-available-as-a-python-package-ff5e4240eb26

              Docling đơn giản hóa quá trình xử lý tài liệu

              https://github.com/DS4SD/docling?tab=readme-ov-file

              Một số tính năng mới như Hiểu và chuyển đổi PDF, MS Word, MS Powerpoint, HTML và một số định dạng hình ảnh. Tạo ra một biểu diễn tài liệu mới, phổ quát có thể bao hàm hệ thống phân cấp tài liệu. Đi kèm với API và CLI mới

              Để sử dụng Docling, chỉ cần cài đặt doclingtừ trình quản lý gói của bạn, ví dụ pip: pip install docling
              Hoạt động trên môi trường macOS, Linux và Windows. Cả kiến ​​trúc x86_64 và arm64.

              Để chuyển đổi từng tài liệu, hãy sử dụng convert(), ví dụ:

              from docling.document_converter import DocumentConverter

              source = “https://arxiv.org/pdf/2408.09869” # document per local path or URL
              converter = DocumentConverter()
              result = converter.convert(source)
              print(result.document.export_to_markdown()) # output: “## Docling Technical Report[…]”

              tham khảo tính năng thêm https://ds4sd.github.io/docling/usage/

              Cú pháp dòng lệnh của Docling v2 để hỗ trợ nhiều định dạng. Ví dụ được hiển thị bên dưới.

              # Convert a single file to Markdown (default)
              docling myfile.pdf

              # Convert a single file to Markdown and JSON, without OCR
              docling myfile.pdf –to json –to md –no-ocr

              # Convert PDF files in input directory to Markdown (default)
              docling ./input/dir –from pdf

              # Convert PDF and Word files in input directory to Markdown and JSON
              docling ./input/dir –from pdf –from docx –to md –to json –output ./scratch

              # Convert all supported files in input directory to Markdown, but abort on first error
              docling ./input/dir –output ./scratch –abort-on-error

              Công cụ tìm kiếm tạo sinh cho các tệp cục bộ

              https://github.com/imanoop7/Generative-Search-Engine-For-Local-Files

              https://pub.towardsai.net/building-your-own-generative-search-engine-for-local-files-using-open-source-models-b09af871751c

              https://pub.towardsai.net/building-your-own-generative-search-engine-for-local-files-using-open-source-models-part-2-4e869f62a9ee

              Local GenAI Search là hệ thống tìm kiếm tài liệu và trả lời câu hỏi được hỗ trợ bởi AI cho phép người dùng khám phá và trích xuất thông tin từ các tài liệu cục bộ của họ bằng các truy vấn ngôn ngữ tự nhiên. Ứng dụng này kết hợp khả năng tìm kiếm ngữ nghĩa với AI tạo ra để cung cấp các câu trả lời chính xác và có nhận thức về ngữ cảnh dựa trên nội dung của các tệp cục bộ của bạn.

              Sao chép kho lưu trữ này:

              git clone https://github.com/imanoop7/Generative-Search-Engine-For-Local-Files
              cd Generative-Search-Engine-For-Local-Files
              Cài đặt các gói cần thiết:

              pip install -r requirements.txt
              Đảm bảo bạn đã cài đặt Ollama và có sẵn mô hình ‘tinyllama’.

              Cách sử dụng
              Chạy ứng dụng Streamlit:

              streamlit run local_genai_search.py
              Mở trình duyệt web của bạn và điều hướng đến URL cục bộ được cung cấp (thường là http://localhost:8501).

              Nhập đường dẫn đến thư mục tài liệu của bạn vào trường nhập văn bản.

              Nhấp vào nút “Lập chỉ mục tài liệu” để xử lý và lập chỉ mục các tệp của bạn (bước này chỉ cần thực hiện một lần hoặc khi bạn thêm tài liệu mới).

              Sau khi lập chỉ mục xong, bạn có thể bắt đầu đặt câu hỏi về tài liệu của mình trong phần “Đặt câu hỏi”.

              AI sẽ cung cấp câu trả lời dựa trên nội dung tài liệu được lập chỉ mục của bạn, cùng với các tài liệu tham khảo nguồn.

              Nó hoạt động như thế nào
              Lập chỉ mục tài liệu : Hệ thống đọc và phân đoạn tài liệu của bạn, sau đó tạo nhúng bằng mô hình chuyển đổi câu. Các nhúng này được lưu trữ trong chỉ mục FAISS để tìm kiếm tương đồng hiệu quả.

              Tìm kiếm ngữ nghĩa : Khi bạn đặt câu hỏi, hệ thống sẽ chuyển đổi câu hỏi đó thành nội dung nhúng và tìm các đoạn tài liệu giống nhau nhất trong chỉ mục FAISS.

              Tạo câu trả lời : Các đoạn tài liệu có liên quan được sử dụng làm bối cảnh cho mô hình AI Ollama, giúp tạo ra câu trả lời toàn diện cho câu hỏi của bạn.

              Trình bày kết quả : Câu trả lời được hiển thị cùng với các tham chiếu đến tài liệu nguồn, có thể mở rộng để xem toàn bộ bối cảnh hoặc tải xuống để xem lại thêm.

              1 hệ thống Tạo dữ liệu tăng cường truy xuất (RAG)

              Các tác nhân hỗ trợ AI đang cách mạng hóa cách chúng ta truy xuất và xử lý thông tin. Bằng cách kết hợp DeepSeek R1 , một mô hình lý luận mạnh mẽ, với SmolAgents , một khuôn khổ tác nhân nhẹ từ Hugging Face, chúng ta có thể xây dựng các trợ lý AI hiệu quả và thông minh có khả năng suy luận logic và truy xuất tài liệu.

              • Tải và xử lý tệp PDF để truy xuất văn bản liền mạch.
              • Lưu trữ thông tin trong cơ sở dữ liệu vector để tìm kiếm nhanh chóng và chính xác.
              • Sử dụng DeepSeek R1 để suy luận nâng cao nhằm đưa ra câu trả lời có cấu trúc tốt.
              • Tận dụng SmolAgents để tạo ra trợ lý AI nhẹ và nhạy.

              Sự kết hợp này đảm bảo phản hồi do AI điều khiển hiệu quả về mặt chi phí, chính xác và có thể mở rộng , lý tưởng cho nghiên cứu, hỗ trợ khách hàng và truy xuất kiến ​​thức tự động.

              Việc triển khai này tích hợp DeepSeek R1 vào một tác nhân AI có khả năng Retrieval-Augmented Generation (RAG) . Nó bao gồm:

              • Tải và xử lý tệp PDF → Chuyển đổi tài liệu thành các đoạn văn bản có thể tìm kiếm được.
              • Tạo kho lưu trữ vector → Lưu trữ các nhúng để truy xuất hiệu quả.
              • Thế hệ tăng cường truy xuất (RAG) với bộ suy luận → Trả lời các truy vấn của người dùng bằng cách truy xuất các tài liệu có liên quan và suy luận về chúng.
              • Tác nhân AI chính → Chỉ đạo cuộc trò chuyện và thực hiện các phản hồi dựa trên lý luận.

              Bước 1: Tải và xử lý PDF

              from langchain_community.document_loaders import DirectoryLoader, PyPDFLoader
              from langchain.text_splitter import RecursiveCharacterTextSplitter
              from langchain_huggingface import HuggingFaceEmbeddings
              from langchain_community.vectorstores import Chroma
              import os
              import shutil

              def load_and_process_pdfs(data_dir: str):
              “””
              Load PDFs from a directory and split them into manageable chunks.

              Args:
              data_dir (str): The directory containing PDF files.

              Returns:
              list: A list of document chunks.
              “””
              loader = DirectoryLoader(
              data_dir,
              glob=“**/*.pdf”,
              loader_cls=PyPDFLoader
              )
              documents = loader.load()

              text_splitter = RecursiveCharacterTextSplitter(
              chunk_size=1000,
              chunk_overlap=200,
              length_function=len,
              )
              chunks = text_splitter.split_documents(documents)
              return chunks

              def create_vector_store(chunks, persist_directory: str):
              “””
              Create and persist a Chroma vector store from document chunks.

              Args:
              chunks (list): The list of document chunks.
              persist_directory (str): Directory to persist the vector store.

              Returns:
              Chroma: The initialized Chroma vector store.
              “””
              if os.path.exists(persist_directory):
              print(f”Clearing existing vector store at {persist_directory})
              shutil.rmtree(persist_directory)

              embeddings = HuggingFaceEmbeddings(
              model_name=“sentence-transformers/all-mpnet-base-v2”,
              model_kwargs={‘device’: ‘cpu’}
              )

              print(“Creating new vector store…”)
              vectordb = Chroma.from_documents(
              documents=chunks,
              embedding=embeddings,
              persist_directory=persist_directory
              )
              return vectordb

              def main():
              data_dir = “data”
              db_dir = “chroma_db”

              print(“Loading and processing PDFs…”)
              chunks = load_and_process_pdfs(data_dir)
              print(f”Created {len(chunks)} chunks from PDFs”)

              print(“Creating vector store…”)
              vectordb = create_vector_store(chunks, db_dir)
              print(f”Vector store created and persisted at {db_dir})

              if __name__ == “__main__”:
              main()

              Tải và xử lý PDF: Tải tất cả các tệp PDF từ một thư mục được chỉ định. Chia chúng thành các phần nhỏ hơn (mỗi phần 1000 ký tự) với 200 ký tự chồng lên nhau để ghi nhớ ngữ cảnh tốt hơn.

              Tạo một cửa hàng Vector: Xóa mọi bộ nhớ vector hiện có. Sử dụng nhúng HuggingFace để chuyển đổi văn bản thành biểu diễn vector. Lưu trữ các nhúng này trong cơ sở dữ liệu vectơ Chroma.

              Bước 2: Triển khai tác nhân lý luận

              from smolagents import OpenAIServerModel, CodeAgent, ToolCallingAgent, HfApiModel, tool, GradioUI
              from langchain_chroma import Chroma
              import os

              reasoning_model_id = “deepseek-r1:7b”

              def get_model(model_id):
              “””
              Initialize an AI model based on the specified model ID.

              Args:
              model_id (str): The ID of the AI model to use.

              Returns:
              OpenAIServerModel: The initialized AI model.
              “””
              return OpenAIServerModel(
              model_id=model_id,
              api_base=“http://localhost:11434/v1”,
              api_key=“ollama”
              )

              # Create the reasoner for better RAG
              reasoning_model = get_model(reasoning_model_id)
              reasoner = CodeAgent(tools=[], model=reasoning_model, add_base_tools=False, max_steps=2)

              # Initialize vector store and embeddings
              embeddings = HuggingFaceEmbeddings(
              model_name=“sentence-transformers/all-mpnet-base-v2”,
              )
              db_dir = “chroma_db”
              vectordb = Chroma(persist_directory=db_dir, embedding_function=embeddings)

              Khởi tạo DeepSeek R1 như một mô hình lý luận. Đối CodeAgenttượng xử lý dữ liệu đầu vào và có thể thực hiện suy luận logic và tạo mã. Kho lưu trữ vector (Chroma) được khởi tạo để lưu trữ các tài liệu đã truy xuất một cách hiệu quả.

              Bước 3: Triển khai Retrieval-Augmented Generation (RAG)

              @tool
              def rag_with_reasoner(user_query: str) -> str:
              “”
              This is a RAG tool that takes in a user query and searches for relevant content from the vector database.
              The result of the search is given to a reasoning LLM to generate a response.

              Args:
              user_query: The user’s question to query the vector database with.

              Returns:
              str: A concise and specific answer to the user’s question.
              “”
              # Search for relevant documents
              docs = vectordb.similarity_search(user_query, k=3)

              # Combine document contents
              context = “\n\n”.join(doc.page_content for doc in docs)

              # Create prompt with context
              prompt = f“”“Based on the following context, answer the user’s question concisely and specifically.
              If the information is insufficient, suggest a better query for further RAG retrieval.

              Context:
              {context}

              Question: {user_query}

              Answer:”“”

              # Get response from reasoning model
              response = reasoner.run(prompt, reset=False)
              return response

              Tiếp nhận truy vấn của người dùng và lấy các tài liệu có liên quan nhất từ ​​kho lưu trữ vector . Gửi ngữ cảnh đã truy xuất tới DeepSeek R1 để lý giải . Nếu thông tin thu thập được không đủ , mô hình sẽ đề xuất truy vấn tốt hơn .

              Bước 4: Triển khai tác nhân AI chính

              # Create the primary agent to direct the conversation
              tool_model = get_model(“llama3.2”)
              primary_agent = ToolCallingAgent(tools=[rag_with_reasoner], model=tool_model, add_base_tools=False, max_steps=3)

              def main():
              “””
              Launch the AI agent with a web interface using Gradio.
              “””

              GradioUI(primary_agent).launch()

              if __name__ == “__main__”:
              main()

              Tác nhân chính ( ToolCallingAgent) đóng vai trò là người quản lý cuộc hội thoại .
              Sử dụng Llama 3.2 làm trình tạo phản hồi chính , trong khi DeepSeek R1 xử lý lý luận .
              Chạy Gradio UI để cung cấp giao diện thân thiện với người dùng.

              Bằng cách tích hợp DeepSeek R1 với SmolAgents , chúng tôi đã xây dựng một trợ lý AI mạnh mẽ nhưng nhẹ có khả năng truy xuất, phân tích và lý luận thông tin một cách hiệu quả . Hệ thống này kết hợp lý luận nâng cao với tìm kiếm tài liệu nhanh , khiến nó trở nên lý tưởng cho nhiều ứng dụng khác nhau như nghiên cứu, hỗ trợ khách hàng tự động và quản lý kiến ​​thức.

              https://medium.com/@mauryaanoop3/building-intelligent-ai-agents-with-deepseek-r1-and-smolagents-e0de20566bf0

              Dựng webserver trên macOS 15.2

              Dựng webserver trên macOS 15.2
              Nội dung

                Phiên bản macOS mới từ 12 đã xóa hoàn toàn PHP khỏi hệ điều hành. Dùng Homebrew trên macOS để cài PHP. Homebrew là một trình quản lý gói phổ biến cho các hệ điều hành Mac. Nó rất hữu ích để cài đặt hầu hết các phần mềm mã nguồn mở như Node. Sử dụng lệnh brew, bạn có thể dễ dàng thêm chức năng mạnh mẽ vào máy Mac của mình, nhưng trước tiên chúng ta phải cài đặt nó.

                /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
                https://codewithkarani.com/2022/03/10/erpnext-error-after-install-127-0-0-1-does-not-exist/?srsltid=AfmBOop1GT1c2BKP2X6a9Kp1SMcFBu79h79mYoICletd46aLZBB8medf
                brew –version

                Có lẽ bạn cũng nên chạy lệnh sau để đảm bảo mọi thứ được định cấu hình chính xác:

                brew doctor
                Để nâng cấp các gói chỉ cần gõ:

                brew update
                brew upgrade

                (echo; echo ‘eval “$(/opt/homebrew/bin/brew shellenv)”‘) >> ~/.zprofile
                eval “$(/opt/homebrew/bin/brew shellenv)”

                Thêm thư viện: brew install openssl

                Cài Apache

                Mặc dù macOS đi kèm với phiên bản Apache tích hợp sẵn, nhiều người dùng thích xóa phiên bản này và cài đặt phiên bản mới nhất thông qua Homebrew, một trình quản lý gói cho macOS.
                macOS đi kèm với một máy chủ Apache được cài đặt sẵn. Nếu bạn muốn cài đặt phiên bản Apache mới nhất, trước tiên bạn cần dừng và vô hiệu hóa phiên bản tích hợp này.

                1. Dừng máy chủ Apache: Mở thiết bị đầu cuối của bạn và nhập lệnh sau để dừng máy chủ Apache: sudo apachectl stop

                sudo apachectl -k stop

                1. Vô hiệu hóa Máy chủ Apache: Để vô hiệu hóa máy chủ tự động khởi động, hãy sử dụng lệnh sau:
                  sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

                Cài đặt Apache bằng cách chạy:
                brew install httpd

                Sau khi cài đặt hoàn tất, bạn có thể khởi động Apache bằng cách gõ:
                sudo brew services start httpd

                Bạn đã cài đặt thành công máy chủ web Apache thông qua Homebrew và định cấu hình nó để tự động khởi động với tài khoản đặc quyền. hãy mở trình duyệt web của bạn và điều hướng đến http://localhost:8080. Bạn sẽ thấy một thông báo nói rằng “Nó hoạt động!”

                Nếu bạn nhận được thông báo rằng trình duyệt không thể kết nối với máy chủ, trước tiên hãy kiểm tra để đảm bảo máy chủ đã hoạt động.

                ps -aef | grep httpd

                Bạn có thể xem nhật ký lỗi Apache trong tab/cửa sổ Terminal mới trong quá trình khởi động lại để xem có bất kỳ điều gì không hợp lệ hoặc gây ra sự cố hay không:

                tail -f /opt/homebrew/var/log/httpd/error_log

                Bạn sẽ thấy một vài quy trình httpd nếu Apache đang hoạt động.
                brew services stop httpd
                brew services start httpd
                brew services restart httpd
                Kiểm tra trạng thái dịch vụ Apache: Để kiểm tra trạng thái của dịch vụ Apache, bạn có thể sử dụng lệnh này:
                brew services list
                Lệnh này sẽ liệt kê tất cả các dịch vụ được quản lý bởi Homebrew cùng với trạng thái của họ. Tìm httpd trong danh sách này để kiểm tra trạng thái của nó.

                Cấu hình Apache

                Hãy nhớ rằng, mỗi khi bạn thực hiện thay đổi đối với tệp cấu hình Apache, bạn cần khởi động lại dịch vụ để các thay đổi có hiệu lực.
                Bây giờ bạn sẽ muốn thực hiện một số thay đổi cấu hình theo môi trường phát triển cục bộ của bạn.

                code /opt/homebrew/etc/httpd/httpd.conf

                nếu dùng default TextEditor dùng lệnh open -e panh.

                Đặt cổng Apache: Phiên bản httpd của Homebrew sử dụng cổng 8080. Bạn phải thay đổi thủ công cổng nghe từ cổng 8080 mặc định sang cổng 80 tiêu chuẩn.
                Tìm dòng có nội dung
                Listen 8080
                và thay đổi nó thành 80:
                Listen 80

                Bây giờ, thay đổi gốc tài liệu cho Apache. Đây là thư mục mà Apache tìm cách phục vụ tệp từ đó. Theo mặc định, thư mục gốc tài liệu được định cấu hình là /opt/homebrew/var/www. Vì đây là một máy phát triển, hãy giả sử chúng ta muốn thay đổi thư mục gốc tài liệu để trỏ đến một thư mục trong thư mục chính của chúng ta.
                Tìm vả thay thành mặc định /opt/homebrew/var/www:
                DocumentRoot “/Users/minhtoan/Sites”
                Bạn cũng cần thay đổi thẻ được định cấu hình ngay bên dưới dòng DocumentRoot.
                <Directory “/Users/your_user/Sites”>

                #
                # AllowOverride controls what directives may be placed in .htaccess files.
                # It can be “All”, “None”, or any combination of the keywords:
                # AllowOverride FileInfo AuthConfig Limit
                #
                AllowOverride all

                Ngoài ra, bạn nên bật mô-đun mod_rewrite bằng cách xóa biểu tượng # đứng đầu khỏi dòng sau. Tìm kiếm dòng và cập nhật nó. điều này sẽ cho phép viết lại URL trên Apache.
                LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

                Vì bạn đã định cấu hình thư mục gốc tài liệu Apache vào thư mục chính của mình. Bạn sẽ gặp sự cố với các quyền vì theo mặc định, Apache chạy dưới dạng trình nền người dùng và trình nền nhóm (Có thể tên người dùng và nhóm là _www). Đối với các hệ thống cá nhân, Bạn có thể thay đổi chúng để khớp với tài khoản người dùng của mình (thay thế user_name bằng tên người dùng thực của bạn), với một nhóm nhân viên.
                User user_name
                Group staff
                Khởi động lại apache để đảm bảo các thay đổi cấu hình của bạn đã có hiệu lực:
                sudo apachectl -k restart
                Apache thích có tên máy chủ trong cấu hình, nhưng điều này bị tắt theo mặc định, vì vậy hãy tìm kiếm:
                #ServerName www.example.com:8080
                và thay thế nó bằng:
                ServerName localhost
                Tạo trang web xem thử:
                mkdir ~/Sites
                echo ” h1>My User Web Root /h1>” > ~/Sites/index.html

                Bây giờ, trỏ trình duyệt của bạn đến http://localhost, Điều này sẽ hiển thị index.html mới được tạo của bạn. Tất cả đã xong.
                Nếu bạn nhận được lỗi khi khởi động lại Apache, hãy thử xóa các dấu ngoặc kép xung quanh các chỉ định DocumentRoot và Directory mà chúng tôi đã thiết lập trước đó.
                xóa tất cả các tệp nhật ký httpd nhật ký hiện tại: rm -Rf /opt/homebrew/var/log/httpd/*

                Apache 2 as Reverse Proxy

                TÌm path config apache2
                ps -ef | grep httpd
                Bỏ dấu # cho những dòng trong file /opt/homebrew/etc/httpd/httpd.conf
                LoadModule xml2enc_module modules/mod_xml2enc.so
                LoadModule proxy_html_module modules/mod_proxy_html.so
                LoadModule proxy_module modules/mod_proxy.so
                LoadModule proxy_connect_module modules/mod_proxy_connect.so
                LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
                LoadModule proxy_http_module modules/mod_proxy_http.so

                Include /private/etc/apache2/extra/httpd-vhosts.conf
                LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
                Qua file /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf
                chỉnh nội dung ví dụ:
                <VirtualHost *:80>
                ServerName example.domain.com
                ServerAlias example.domain.com
                ProxyRequests Off
                <Proxy *>
                Require all granted
                </Proxy>
                ProxyPass / http://example.domain.com:8069/
                ProxyPassReverse / http://example.domain.com:80>
                ErrorLog /var/log/apache2/error.log
                CustomLog /var/log/apache2/access.log combined
                <Location />
                Require all granted
                </Location>
                </VirtualHost>

                VirtualHost *:8080 và Listen 8080 phải giống nhau.

                Hay như xem https://kcntt.duytan.edu.vn/uploads/6847dd74-a8f8-4bbb-8b82-430a56fecf58_vhostonmacos.pdf:

                ServerName apple.com
                ServerAlias www.apple.com
                DocumentRoot “/Users/USERNAME/Sites/apple”
                ErrorLog “/private/var/log/apache2/apple.com-error_log”
                CustomLog “/private/var/log/apache2/apple.com-access_log” common ServerAdmin web@apple.com

                LoadModule ssl_module modules/mod_ssl.so

                Shown in context, my http-vhosts.conf file looked like this:

                Listen *:443
                NameVirtualHost *:80
                NameVirtualHost *:443

                <VirtualHost *:80>
                   DocumentRoot "/Library/WebServer/Documents"
                   ServerName localhost
                </VirtualHost>
                
                <VirtualHost *:80>
                   DocumentRoot "/Users/me/Sites/testsite.com
                   ServerName testsite.dev
                </VirtualHost>
                
                <VirtualHost *:443>
                   SSLEngine on
                   SSLCertificateFile /private/etc/apache2/ssl/server.crt
                   SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
                   DocumentRoot "/Users/me/Sites/testsite2.com"
                   ServerName testsite2.dev
                </VirtualHost>

                sudo apachectl -k restart

                brew services restart httpd

                brew services

                Gỡ cài đặt Apache HTTP Server được cài đặt thông qua Homebrew

                bạn có thể dễ dàng thực hiện bằng cách làm theo các bước sau:
                Dừng dịch vụ Apache: Trước khi gỡ cài đặt, bạn cần dừng dịch vụ Apache nếu nó hiện đang chạy. Bạn có thể làm điều này bằng cách gõ: brew services stop httpd
                Gỡ cài đặt Apache: Sau khi dừng dịch vụ, bạn có thể gỡ cài đặt Apache bằng cách chạy:
                brew uninstall httpd
                Xác minh gỡ cài đặt: Để xác minh rằng Apache đã được gỡ cài đặt, bạn có thể thử điều hướng đến http://localhost (hoặc http://localhost:8080 nếu bạn không thay đổi cổng mặc định) trong trình duyệt web của mình. Bạn sẽ không còn thấy “Nó hoạt động!” thông điệp.
                Xin lưu ý rằng việc gỡ cài đặt Apache thông qua Homebrew sẽ không tự động xóa các tệp cấu hình nằm trong /usr/local/etc/httpd/. Nếu bạn muốn xóa hoàn toàn tất cả các dấu vết của Apache, bạn sẽ cần xóa thư mục này theo cách thủ công.

                Edit code Visual Studio

                Mặc định dùng TextEdit không hữu ích khi dùng Visual Studio Code miễn phí trên Mac, Windows, and Linux
                brew install –cask visual-studio-code
                Nếu bạn đã cài đặt Visual Studio Code, bạn có thể dễ dàng tạo một liên kết mã tượng trưng với: ln -s /Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code /opt/homebrew/bin/code

                Cài PHP

                PHP 8.3 ổn định mới nhất mới được Brew chính thức hỗ trợ và phải được xây dựng từ nguồn khá chậm: brew install php
                brew install php@8.3
                Chúng tôi đã cài đặt nhưng không liên kết các phiên bản PHP này.
                brew unlink php && brew link –overwrite –force php@8.3

                Kiểm tra: php -v
                php -m xem các module cài vô.
                Một điều phổ biến cần thay đổi là cài đặt bộ nhớ hoặc cấu hình date.timezone. Các tệp php.ini được đặt trong thư mục /opt/homebrew/etc/php/8.3/php.ini

                Một bước bổ sung là cần thiết cho PHP 8 và macOS đi kèm Apache:

                sudo nano /etc/apache2/httpd.conf
                /opt/homebrew/etc/httpd/httpd.conf
                Sau đoạn
                LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

                thêm dòng này vô
                LoadModule php_module /opt/homebrew/opt/php@8.3/lib/httpd/modules/libphp.so

                Ngoài ra, bạn phải đặt Chỉ mục Thư mục cho PHP một cách rõ ràng, vì vậy hãy tìm kiếm khối này:

                <IfModule dir_module>
                DirectoryIndex index.html
                </IfModule>

                và thay thế nó bằng cái này:

                <IfModule dir_module>
                DirectoryIndex index.php index.html
                </IfModule>

                <FilesMatch \.php$>
                SetHandler application/x-httpd-php
                </FilesMatch>

                Lưu tệp và dừng Apache sau đó bắt đầu lại, bây giờ chúng ta đã cài đặt PHP:

                brew services stop httpd
                brew services start httpd

                kiểm tra xem PHP có được cài đặt và chạy echo “<?php phpinfo();” > ~/Sites/info.php

                ERPNext trên MacOS

                do nhiều yêu cầu thư viện python nên thiết lập môi trường ảo lên

                hãy làm theo các bước sau:

                Mở cửa sổ Terminal.

                python3 -m pip install virtualenv

                Điều hướng đến nơi chứa thư mục gốc của môi trường ảo của bạn.

                python3 -m venv myenv

                Chạy chong lệnh này sẽ thấy ở thư mục hiện tại xuất hiện thêm một thư mục myenv. kích hoạt môi trường ảo lên bằng lệnh:

                source myenv/bin/activate

                Bây giờ thì các bạn có thể tha hồ cài cắm bằng lệnh pip install quen thuộc rồi. Thích cài gì thì cài, thích cắm gì thì cắm và nếu lỗi thì chỉ cần xoá béng cái thư mục myenv đi và tạo lại.

                thoát khỏi môi trường ảo

                deactivate

                Hủy kích hoạt môi trường ảo trên macOS và Linux, một số điều quan trọng bạn nên làm để đảm bảo môi trường của bạn luôn sạch sẽ và ngăn nắp trước khi ra ngoài:

                pip list

                pip uninstall package-name

                Nếu muốn lưu các yêu cầu để có thể dễ dàng tạo lại môi trường trong tương lai. pip freeze > requirements.txt

                Trước khi thoát khỏi môi trường ảo, hãy xóa mọi tệp tạm thời

                python -c “import tempfile, shutil; shutil.rmtree(tempfile.gettempdir())”

                Vô hiệu hóa môi trường ảo trên Windows bằng lệnh sau

                scripts\deactivate

                Vô hiệu hóa môi trường ảo trên macOS hoặc Linux bằng lệnh sau:

                source bin/deactivate

                Nếu bạn không còn cần môi trường ảo nữa, bạn có thể xóa nó để giải phóng dung lượng đĩa. Để xóa môi trường ảo, chỉ cần điều hướng đến thư mục chứa môi trường và xóa toàn bộ thư mục.

                hãy làm theo các bước sau:

                1. Mở cửa sổ Terminal.
                2. Điều hướng đến thư mục gốc của môi trường ảo của bạn
                3. Chạysource bin/deactivate
                4. Nó sẽ vô hiệu hóa môi trường ảo Python trên macOS.

                Yêu cầu cài:
                Python > 3.6+
                Homebrew >3.6+
                Node.js 14
                Redis 5 (caching and real time updates)
                MariaDB (to run database driven apps)
                yarn 1.12+ (js dependency manager)
                pip 20+
                https://dev.to/ahmadfarazcrypto/erpnext-installation-guide-mac-1p79
                Đầu tiên, Git là hệ thống kiểm soát phiên bản được sử dụng phổ biến nhất. Git theo dõi các thay đổi bạn thực hiện đối với các tệp, vì vậy bạn có bản ghi về những gì đã được thực hiện và bạn có thể hoàn nguyên về các phiên bản cụ thể nếu cần. Git cũng giúp việc cộng tác dễ dàng hơn, cho phép các thay đổi của nhiều người được hợp nhất thành một nguồn.

                brew install git
                Cài đặt setuptools và pip (Python’s Package Manager). Setuptools là một tập hợp các cải tiến cho Python distutils cho phép các nhà phát triển xây dựng và phân phối các gói Python dễ dàng hơn, đặc biệt là những gói có phụ thuộc vào các gói khác. Các gói được xây dựng và phân phối bằng cách sử dụng công cụ thiết lập trông giống như các gói Python thông thường dựa trên distutils. pip là một trình quản lý gói cho Python. Đó là một công cụ cho phép bạn cài đặt và quản lý các thư viện và phụ thuộc bổ sung không được phân phối như một phần của thư viện tiêu chuẩn.

                sudo pip3 install setuptools
                Cài đặt virtualenv. virtualenv là một công cụ để tạo các môi trường Python bị cô lập có chứa bản sao python, pip và nơi riêng của chúng để giữ các thư viện được cài đặt từ PyPI. Nó được thiết kế để cho phép bạn làm việc trên nhiều dự án với các phụ thuộc khác nhau cùng một lúc trên cùng một máy.

                sudo pip3 install virtualenv
                Cài đặt MariaDB. MariaDB được phát triển dưới dạng phần mềm mã nguồn mở và là cơ sở dữ liệu quan hệ, nó cung cấp giao diện SQL để truy cập dữ liệu.
                /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
                brew install mariadb
                mysql_install_db
                mariadb-secure-installation
                mariadb -u root -p
                Trong quá trình cài đặt này, bạn sẽ được nhắc đặt mật khẩu root MySQL. Nếu bạn không được nhắc như vậy Bạn có thể khởi tạo thiết lập máy chủ MySQL bằng cách thực hiện lệnh sau: sudo mysql_secure_installation

                Các tệp phát triển cơ sở dữ liệu MySQL: brew install mysql-client
                Chỉnh sửa cấu hình mariadb (mã hóa ký tự unicode)
                sudo nano /opt/homebrew/mariadb/my.cnf
                thêm cái này vào tập tin my.cnf

                [mysqld] character-set-client-handshake = FALSE
                character-set-server = utf8mb4
                collation-server = utf8mb4_unicode_ci

                [mysql] default-character-set = utf8mb4
                Bây giờ nhấn (Ctrl-X) để thoát

                brew services start mariadb

                Cài đặt Redis. Redis là một mã nguồn mở (được cấp phép BSD), kho lưu trữ cấu trúc dữ liệu trong bộ nhớ, được sử dụng làm cơ sở dữ liệu, bộ nhớ đệm và môi giới tin nhắn.

                brew install redis
                Cài đặt Node.js 14. package X

                Node.js là một môi trường thời gian chạy đa nền tảng, mã nguồn mở để phát triển các ứng dụng mạng và phía máy chủ. Các ứng dụng Node.js được viết bằng JavaScript và có thể chạy trong thời gian chạy Node.js trên OS X, Microsoft Windows và Linux.

                brew install node
                Đây sẽ là phiên bản mới nhất của Node.

                Nếu bạn muốn thay đổi phiên bản nút, bạn có thể sử dụng NVM.

                How to Install and Configure NVM on macOS


                BƯỚC 10 cài đặt Yarn

                Yarn là một trình quản lý gói JavaScript nhằm mục đích nhanh chóng, xác định và an toàn. Hãy xem việc thả sợi ở nơi bạn đã sử dụng npm trước đây dễ dàng như thế nào và nhận được cài đặt nhanh hơn, đáng tin cậy hơn. Yarn là một trình quản lý gói cho JavaScript.

                sudo npm install -g yarn
                BƯỚC 11 cài đặt wkhtmltopdf

                Wkhtmltopdf là một tiện ích shell dòng lệnh mã nguồn mở đơn giản và hiệu quả hơn nhiều cho phép người dùng chuyển đổi bất kỳ HTML (Trang Web) nào sang tài liệu PDF hoặc hình ảnh (jpg, png, v.v.)

                brew install wkhtmltopdf
                BƯỚC 12 cài đặt frappe-bench

                sudo -H pip3 install frappe-bench
                QUAN TRỌNG: bạn có thể muốn đăng xuất và đăng nhập lại vào thiết bị đầu cuối của mình trước bước tiếp theo và Bạn phải đăng nhập.

                bench –version
                BƯỚC 13 khởi tạo băng ghế frappe & cài đặt frappe phiên bản mới nhất

                bench init frappe-bench –frappe-branch version-13

                cd frappe-bench/
                bench start
                STEP 14 create a site in frappe bench
                bench new-site site1.local
                LƯU Ý: Nếu bạn gặp phải loại vấn đề này.

                For key collation_server. Expected value utf8mb4_unicode_ci, found value utf8mb4_general_ci
                ================================================================================
                Creation of your site – site11.locale failed because MariaDB is not properly
                configured. If using version 10.2.x or earlier, make sure you use the
                the Barracuda storage engine.
                Please verify the settings above in MariaDB’s my.cnf. Restart MariaDB. And
                then run `bench new-site site1.locale` again.
                sau đó bạn phải vào mariadb shell và chạy các lệnh này

                SET GLOBAL collation_server = ‘utf8mb4_unicode_ci’;
                và khởi động lại mariadb

                brew services restart mariadb
                BƯỚC 15 cài đặt ERPNext phiên bản mới nhất trong băng ghế dự bị & trang web

                bench get-app erpnext –branch version-13
                ###OR
                bench get-app https://github.com/frappe/erpnext –branch version-13

                bench –site site1.local install-app erpnext

                bench –site site1.local add-to-hosts

                bench start

                Máy chủ của bạn sẽ chạy trên máy chủ này

                http://site1.local:8000/

                Lỗi 404 sau khi cài đặt do chưa chỉ web nào là default site. thiếu file currentsite.txt. dùng câu lệnh như sau

                bench use [your-site]

                thêm tên site vào hosts dùng lệnh: bench –site [your-site] add-to-hosts

                | $ bench start

                dùng tên site hoặc ip vô [your-site]:[port-number]

                 

                NextCloud cài trên máy MacOS

                Cần điều chỉnh php: nano /opt/homebrew/etc/php/8.3/php.ini

                max_execution_time = 300
                memory_limit = 512M
                post_max_size = 128M
                upload_max_filesize = 128M

                khởi dộng lại:

                brew services restart php@8.3

                xem trạng thái nơi lưu trữ dữ liệu

                Như MariaDB

                brew services mariadb status

                Cài mới thì: brew install mariadb@10.6

                thêm vào $PATH:

                echo ‘export PATH=”/opt/homebrew/opt/mariadb@10.6/bin:$PATH”‘ >> ~/.zshrc

                Để bảo mật cài đặt MariaDB của bạn, hãy đặt mật khẩu root.

                sudo /opt/homebrew/opt/mariadb@10.6/bin/mysqladmin -u root password $NEW_PASSWORD

                Đảm bảo MariaDB sử dụng các bộ ký tự thích hợp.

                Thêm các cấu hình sau vào:

                [mysqld] character-set-client-handshake = FALSE
                character-set-server = utf8mb4
                collation-server = utf8mb4_unicode_ci
                bind-address = 127.0.0.1

                [mysql] default-character-set = utf8mb4

                Khởi động lại: brew services restart mariadb@10.6

                Nếu không thì dùng MySQL.

                https://lipn.univ-paris13.fr/~cerin/HDU/nextcloud.html

                MySQL

                Cài mới: $ brew install mysql

                Chạy MySQL
                $ brew services start mysql

                Khai báo như cả hai MySQL và mariadb

                sudo mysql_secure_installation
                Tập lệnh này sẽ đặt mật khẩu root, xóa người dùng ẩn danh, không cho phép đăng nhập root từ xa và xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào MariaDB an toàn như hình dưới đây:
                Đầu tiên n
                Set root password? [Y/n] y
                Remove anonymous users? [Y/n] y
                Disallow root login remotely? [Y/n] y
                Remove test database and access to it? [Y/n] y
                Reload privilege tables now? [Y/n] y

                Khởi động services mysql:
                brew services start|stop|restart mysql.

                Rồi bây giờ vô thực hiện tạo database: mysql -u root -p

                Tiếp theo tạo cơ sở dữ liệu cho Next Cloud và gán cho 1 user khác.

                CREATE DATABASE nextclouddb;
                GRANT ALL ON nextclouddb.* TO ‘nextcloud_user’@’localhost’ IDENTIFIED BY ‘strong password’;
                FLUSH PRIVILEGES;
                EXIT;

                Thử xem bằng cách dùng code sau vào file index.php và truy cập http://localhost/index.php

                Nội dung xem ở trang https://lipn.univ-paris13.fr/~cerin/HDU/nextcloud.html

                Tiếp đến, download Nextcloud trên server, bún nén vào thư mục Sites. Dùng lệnh pwd xem chi tiết đường dẫn

                Thay đổi quyền:

                chown -R YOUR_NAME:staff /usr/local/var/www/nextcloud

                Nếu không, bạn sẽ gặp lỗi vì các quyền không chính xác. Để kiểm tra lỗi, bạn có thể kiểm tra các tệp /usr/local/var/log/httpd/access_log /usr/local/var/log/httpd/error_log và /usr/local/var/www/nextcloud/data/nextcloud.log.

                Cài richdocumentscode_arm64, app office cần load libfuse.so, libfontconfig.so trong httpd.config, cấu hình thêm /tmp.

                brew install libfuse

                brew install fontconfig

                • Nền tảng chạy Linux x86-64 hoặc ARM64 (aarch64)

                Xem hướng dẫn tại https://docs.nextcloud.com/server/29/Nextcloud_Server_Administration_Manual.pdf

                Cho phép máy chủ sử dụng các địa chỉ cục bộ, ví dụ như trong các chia sẻ liên kết, dịch vụ webcal, v.v. Mặc định là false`. Thêm vào config.php

                ‘allow_local_remote_servers’ => true,

                Thêm app External storage

                External storage support: Ứng dụng này cho phép quản trị viên cấu hình kết nối đến các lưu trữ ngoài, chẳng hạn như máy chủ FTP, S3 hoặc SWIFT, các máy chủ Nextcloud khác, máy chủ WebDAV, v.v. Quản trị viên có thể chọn loại lưu trữ nào để bật và có thể gắn các vị trí lưu trữ này cho một tài khoản, một nhóm hoặc toàn bộ hệ thống. Người dùng sẽ thấy một thư mục mới xuất hiện trong thư mục Nextcloud gốc của họ, họ có thể truy cập và sử dụng thư mục này giống như bất kỳ thư mục Nextcloud nào khác. Lưu trữ ngoài cũng cho phép mọi người chia sẻ các tệp được lưu trữ trong các vị trí ngoài này. Trong những trường hợp này, thông tin xác thực của chủ sở hữu tệp được sử dụng khi người nhận yêu cầu tệp từ lưu trữ ngoài, do đó đảm bảo rằng người nhận có thể truy cập tệp được chia sẻ. Lưu trữ ngoài có thể được cấu hình bằng GUI hoặc tại dòng lệnh. Tùy chọn thứ hai này cung cấp cho quản trị viên tính linh hoạt hơn để cấu hình các điểm gắn lưu trữ ngoài hàng loạt và thiết lập các ưu tiên gắn kết. Thông tin chi tiết hơn có sẵn trong tài liệu GUI lưu trữ ngoài và tài liệu Tệp cấu hình lưu trữ ngoài.

                Xuất hiện lỗi“smbclient” is not installed. Mounting of “SMB / CIFS”, “SMB / CIFS using OC login”

                Cài vô bằng câu lệnh: brew install samba

                Sau đó: brew list –versions samba

                và smbutil statshares -a

                Load lại trang nextcloud.

                 

                Noip

                https://www.noip.com/support/knowledgebase/installing-the-dynamic-update-client-on-a-mac

                https://developers.cloudflare.com/dns/manage-dns-records/how-to/managing-dynamic-ip-addresses/

                https://gist.github.com/tehpeh/11274305

                 

                Tối ưu chi phí cho Mac mini M4

                Tối ưu chi phí cho Mac mini M4

                Mac mini M4 là một lựa chọn tuyệt vời cho những ai đang tìm kiếm một chiếc máy tính để bàn hay server nhỏ gọn, mạnh mẽ và chạy macOS. Tuy nhiên, để tối ưu hóa chi phí cho chiếc máy này, bạn cần cân nhắc một số yếu tố sau như:

                • Chip M4: Đây là yếu tố cốt lõi quyết định hiệu năng của máy. Nếu nhu cầu sử dụng của bạn chủ yếu là các tác vụ văn phòng, làm phim ngắn dưới 4k thì chip M4 tiêu chuẩn là đủ. Một server web thì cũng đáp ứng tương đối ổn cho tác vụ. Tuy nhiên, nếu bạn làm đồ họa, video, hoặc các tác vụ nặng hơn, hãy cân nhắc phiên bản M4 Pro để có hiệu năng tốt hơn.
                • RAM: RAM 16GB là tiêu chuẩn trên Mac mini M4, đủ cho hầu hết người dùng. Tuy nhiên, nếu bạn thường xuyên chạy nhiều ứng dụng cùng lúc hoặc làm việc với các tập tin lớn, bạn có thể nâng cấp lên 32GB hoặc 64GB.
                • Ổ cứng: Ổ SSD 256GB là lựa chọn cơ bản. Nếu bạn cần nhiều dung lượng lưu trữ hơn, hãy nâng cấp lên 512GB hoặc 1TB.
                • Cổng kết nối mạng Ethernet Gigabit. Để kết nối mạng nhanh hơn, bạn có thể định cấu hình Mac mini với Ethernet 10Gb, sẽ cung cấp băng thông kết nối cao hơn để chia sẻ các tệp và làm việc với bộ nhớ mạng hiệu năng cao.

                Lưu ý: Việc nâng cấp RAM và ổ cứng, Cổng kết nối mạng sau khi mua máy sẽ tốn kém hơn so với việc chọn cấu hình cao ngay từ đầu. Mà chạy LM studio gói Model Granite 3.1 chuẩn GGUF thì không thể chạy trên SSD bên ngoài.

                Ram và Cổng kết nối mạng mình nên cân nhắc trước khi mua nên chi thêm khoảng này. Còn SSD chỉ cần cơ bản, chỉ còn để chạy macOS. Nó có thể kết nối ssd bên ngoài mà việc này tốt nhất nên làm ngay sau khi cài máy, nhớ mật khẩu đăng nhập máy, iCloud. Và nếu quyết định dùng cách này lâu dài thì nên dùng box và ssd có khả năng hoạt động liên tục, lâu dài. Bây giờ bắt tay thêm bằng cách như sau:

                Bước 1. Erase lại SSD đúng chuẩn

                – Vào Disk Utility, Chọn vào tên ổ cứng> chọn vào tên ổ cứng (ở trên cùng)> chọn Erase> và Đặt tên, Format định dạng APFS> Scheme chọn đúng GUID Partiton Map như hình

                Lưu ý: Ai không thấy mục Scheme thì Và View> chọn Show All Device (như hình) rồi nhấn lại vào cấp cao nhất của tên ổ cứng> nhấn Erase lại sẽ thấy

                Lưu ý: Nếu trước đó anh em có cài nhiều phần mềm và thiết đặt thì nên đặt tên này giống hệt với tên User lúc đăng nhập máy (cũng là tên thư mục Home). Lúc chuyển xong mọi thứ sẽ như cũ không cần phải thiết đặt lại.

                Bước 2. Tạo thư mục chứa Home Folder trong ổ cứng ngoài

                Sau khi Erase xong, mở ổ cứng ngoài lên, tạo 1 thư mục có tên bất kỳ để ở bước kế tiếp sẽ trỏ đường dẫn thư mục Home của Mac vào đây.

                Bước 3. Copy toàn bộ dữ liệu thư mục Home sang thư mục vừa tạo trên ổ cứng gắn ngoài

                Như hình ghi chú ở trên, thư mục Home có tên chính là tên User bạn đặt lúc cài máy, nằm ở đường dẫn/Users. Ở bước 3 ngày bạn sẽ copy toàn bộ nội dung trong thư mục home, sang thư mục vừa tạo trên SSD. Ở trường hợp của mình là nội dung trong thư mục maclife sang maclife_ex

                Bước 4: Trỏ đường dẫn thư mục Home sang thư mục Home mới

                Vào System Setting> chọn Users & Groups> sau đó click chuột phải vào tên User hiện tại> Sẽ thấy chữ Advanced Options> Sau đó nhập mật khẩu đăng nhập máy

                Chọn Choose và chọn tới ổ cứng ngoài> Chọn vào thư mục đã tạo sẵn trên SSD ở bước 2.

                Sau khi nhấn OK, máy sẽ khởi động lại và bạn phải làm lại các thao tác tương tự như lúc mới mua máy. Tới đoạn này nếu ai đã cài khá nhiều ứng dụng hoặc có các thiết đặt với dock, chuột, phím… thì sẽ phải thiết đặt lại từ đầu. Chính vì vậy mình mới khuyên nên làm ngay sau khi cài máy là tốt nhất.

                Bước 5: [Cần đọc kỹ] Di chuyển các ứng dụng trong thư mục Application

                Thư mục chiếm nhiều dung lượng nhất nếu anh em sử dụng nhiều phần mềm có lẽ là Application. Sau khi đã di chuyển thư mục Home sang ổ cứng ngoài thì việc di chuyển và chạy ứng dụng trong thư mục trên ổ cứng ngoài sẽ rất mượt và không lỗi. Để di chuyển thư mục Application anh em làm như sau:

                – Mở ổ Macintosh HD (hoặc tên khác nếu AE có đổi, đại khái là ổ cài Mac), sau đó kéo thư mục Application sang thư mục Home đã tạo trên ổ cứng ngoài ở Bước 2

                [Quan trọng quan trọng] Sau đó, ví dụ tải ứng dụng gì đó trên App Store, App thường sẽ tự động vô thư mục Applications trên ổ cứng của máy (ổ cứng gắn trong), bạn chỉ việc chép ưng dụng đó qua thư mục Applications trên ổ cứng gắn ngoài, và xóa ứng dụng trên ổ cứng gắn trong đi. Ứng dụng vẫn hoạt động bình thường và ổn định, các thư mục Cache của phần mềm nếu có cũng sẽ được tạo trong các thư mục của ổ cứng gắn ngoài.

                Việc cài ứng dụng xong phải di chuyển qua Applications hơi cực tí, nhưng thường anh em không cài quá nhiều ứng dụng, và chỉ di chuyển 1 lần rồi xài hoài, nên cũng đáng để đánh đổi với cái giá SSD đắt đỏ của Apple, thay vào đó anh em đầu tư vào RAM sẽ tốt hơn. Chúc anh em thành công

                Lưu ý: Sẽ có bạn nói việc move thư mục Home ra ổ cứng ngoài là không cần thiết, tuy nhiên, anh em nào có xài Zalo, Telegram hoặc một số ứng dụng có tạo cache trong thư mục Home sẽ thấy việc nó ngốn dung lượng nhiều và rất nhanh sau một thời gian sử dụng, ổ cứng 256 sẽ không trụ nổi sau vài tháng. Nên việc có thực hiện thao tác di chuyển thư mục Home ra ssd ngoài hay không là tùy mỗi người.

                Nguồn maclife.io/cach-dua-thu-muc-home-va-ung-dung-ra-o-cung-ngoai.html

                Có cần tắt gatekeeper

                Hướng dẫn tắt gatekeeper trên macOS Sequoia 15


                Cũng chả cần tắt gatekeeper vẫn cài được App thoải mái nha. Chuột phải chọn open 2 lần, rồi xattr -cr link path app.

                Xài lệnh xattr -cr. Ko cần tắt gatekeeper gì hết.

                Máy in Samsung cũ dùng trên Mac OS 1

                Trình điều khiển không được cập nhật để cho phép bạn thực sự cài đặt nó trên máy tính mới. Tuy nhiên, nếu bạn có thể cài đặt nó, trình điều khiển sẽ hoạt động. Nó có thể sẽ áp dụng cho bất kỳ máy in Samsung nào có vấn đề tương tự. Pacifist là một công cụ đa năng để làm việc với các tệp gói macOS ver cũ, hình ảnh đĩa và tệp lưu trữ. Sử dụng Pacifist, bạn có thể:

                Mở nhiều kho lưu trữ tập tin khác nhau, bao gồm: Các tệp gói macOS .pkg, Hình ảnh đĩa .dmg, Danh mục tài sản macOS, Các tệp Tome của trình cài đặt Mac OS 9 và .zip, .tar, .tar.gz, .tar.bz2, .xar và .yaa, Kiểm tra và trích xuất các tệp và thư mục riêng lẻ, Kiểm tra tập lệnh cài đặt và các tài nguyên gói khác để đảm bảo rằng một gói đáng tin cậy trước khi cài đặt nó, Phân tích các cài đặt hiện có trên hệ thống của bạn, để giúp bạn xác định ai đã cài đặt một tệp cụ thể trên hệ thống của bạn, Xem nội dung lưu trữ trực tiếp từ Finder thông qua QuickLook, Xem và trích xuất các tệp từ kho lưu trữ thông qua sự lựa chọn của bạn về giao diện GUI mượt mà hoặc giao diện dòng lệnh thân thiện với tự động hóa và thậm chí kiểm tra nội dung của các tệp .zip (và các loại được hỗ trợ khác) qua Web mà không cần tải xuống toàn bộ kho lưu trữ trước.

                Pacifist được tối ưu hóa cho Apple Silicon và cũng hoạt động trên bộ xử lý Intel™ 64 bit. Ứng dụng Pacifist được sử dụng miễn phí ít nhất một lần mà không tính phí. Không chắc nó cho phép nó bao nhiêu lần.

                1. Tải xuống tệp .dmg từ Samsung Printer Drivers v2.6 cho OS X (AU)
                2. Tải xuống ứng dụng macOS của bên thứ 3 có tên Pacifist của CharlesSoft từ https://www.charlessoft.com
                3. Mở .dmg sao cho nó gắn vào Finder
                4. Mở Pacifist
                5. Chọn Gói Mở
                6. Xác định vị trí tệp bên trong tệp .dmg được gắn
                7. Chọn Cài đặt trên thanh công cụ trên cùng của Pacifist và cung cấp thông tin đăng nhập quản trị viên của bạn khi được nhắc
                8. Thêm máy in của bạn từ Tùy chọn hệ thống > In và quét > + thành công!

                Gói SAMSUNG v2.6 hỗ trợ các máy: C410, C460, CLP-300, CLP-610, CLP-680, CLX-216x, CLX-6260, CLX-8640_8650, CLX-92x1_93x1, M2020, M2070, M262x_282x, M267x_287x, M332x_382x_402x, M337x_387x_407x, MFP_65x, ML-1630, ML-1630W, ML-1640, ML-191x_252x, ML-2240, ML-2245, PDEs, SCMS, SCX-4300, SCX-4500, SCX-4500W, SCX-4600, SCX-4623, SCX-4623FW, SCX-4×24, SCX-8123_8128.

                Gói Samsung_Mac_Driver_V3.93.08: C268x, C3010, C3060, C351x, C401x, C406x, C43x, C48x, C51x, K2200, K302, K3250, M2010, M2020, M203x, M2060, M2070, M262x_282x, M263x_M284x, M267x_287x, M283x, M288x, M301x, M306x, M332x_382x_402x, M337x_387x_407x, M403x, M408x, M456x, ML-2160, SCX-3400, SCX-4650_4x21S, SF-760, UPD, X3220

                Triển khai LLM trên Apple Silicon (M1, M2, M3, M4)

                Triển khai LLM trên Apple Silicon (M1, M2, M3, M4)
                Nội dung

                  Chạy mô hình ngôn ngữ lớn như Llama 3 trên Apple Silicon với MLX Framework của Apple. Người dùng Mac, việc tận dụng MLX Framework của Apple có thể nâng cao đáng kể hiệu quả đào tạo và triển khai các mô hình này trên silicon của Apple. Hướng dẫn này cung cấp hướng dẫn chi tiết về các bước và cân nhắc cần thiết để chạy Llama 3 hoặc bất kỳ LLM nào khác bằng MLX Framework.

                  Yêu cầu phần cứng:
                  – Bạn cần ít nhất 8 GB VRAM để thực hiện chính xác hướng dẫn này.

                  – Sử dụng chip dòng M (chip Apple)

                  – Sử dụng Python gốc >= 3.9

                  – macOS >= 13.5 nên sử dụng macOS 14 (Sonoma)

                  Thử nghiệm với LLM trên máy tính của bạn. Giao diện trò chuyện và API có thể lập trình https://lmstudio.ai/download?os=mac

                  Để sử dụng MLX với LibreChat https://www.librechat.ai/blog/2024-05-01_mlx

                  Framework MLX

                  Lấy cảm hứng từ PyTorch, Jax và ArrayFire, MLX là một khuôn khổ đào tạo và phục vụ mô hình được thiết kế riêng cho silicon của Apple bởi Apple Machine Learning Research. Nó hỗ trợ một loạt các tác vụ học máy, bao gồm tạo văn bản quy mô lớn, tạo hình ảnh và nhận dạng giọng nói. Khuôn khổ này được tích hợp với Hugging Face, cho phép tải và phục vụ mô hình liền mạch.

                  Triển khai LLM trên Apple Silicon (M1, M2, M3, M4)

                  Các tính năng chính

                  – API quen thuộc : MLX cung cấp API Python bám sát NumPy, cùng với các API C++, C và Swift có đầy đủ tính năng tương tự như API Python.
                  – Chuyển đổi hàm có thể cấu hình : Hỗ trợ tính toán phân biệt tự động, vectơ hóa và tối ưu hóa đồ thị tính toán.
                  – Tính toán Lazy : Tính toán MLX linh động, nghĩa là các mảng chỉ được thực hiện khi cần thiết, giúp tăng hiệu quả.
                  – Xây dựng đồ thị động : Đồ thị tính toán được xây dựng theo kiểu động, tránh biên dịch chậm và đơn giản hóa việc gỡ lỗi.
                  – Hỗ trợ nhiều thiết bị : Các hoạt động có thể được thực hiện trên bất kỳ thiết bị được hỗ trợ nào (CPU hoặc GPU) mà không cần truyền dữ liệu.
                  – Mô hình bộ nhớ hợp nhất : MLX sử dụng mô hình bộ nhớ hợp nhất, cho phép CPU và GPU chia sẻ cùng một nhóm bộ nhớ, loại bỏ nhu cầu truyền dữ liệu giữa chúng và do đó nâng cao hiệu quả và hiệu suất.

                  Hạn chế

                  – Dành riêng cho Apple Silicon : MLX được thiết kế dành riêng cho Apple silicon, giới hạn việc sử dụng cho phần cứng tương thích.
                  – Hỗ trợ cộng đồng hạn chế : Là một khuôn khổ tương đối mới, MLX có cộng đồng nhỏ hơn và ít tài nguyên hơn so với các khuôn khổ đã được thành lập lâu đời hơn.
                  – Thách thức về tối ưu hóa : Mặc dù khuôn khổ này hiệu quả, nhưng để đạt được hiệu suất tối ưu có thể cần phải điều chỉnh đáng kể và hiểu biết sâu sắc về cả phần cứng và khuôn khổ.

                  Cài đặt

                  Tạo một môi trường ảo (khuyến nghị)

                  Đầu tiên, hãy tạo một môi trường ảo cho dự án của bạn. Bước này là tùy chọn nếu bạn đã thiết lập một môi trường ảo.

                  1. Điều hướng đến thư mục dự án của bạn và tạo môi trường ảo:
                  python3 -m venv env_name
                  2. Kích hoạt môi trường:
                  source env_name\\bin\\activate

                  Cài đặt MLX-LM

                  MLX là một gói độc lập và có một gói phụ gọi là MLX-LM tích hợp Hugging Face cho các Mô hình ngôn ngữ lớn.

                  1. Cài đặt MLX-LM
                  pip3 install mlx-lm
                  Tùy chọn: Cài đặt PyTorch (phiên bản nightly) — ẩn cảnh báo:

                  pip3 install –pre torch –index-url <https://download.pytorch.org/whl/nightly/cpu>

                  Tải xuống mô hình

                  1. Tải xuống mô hình từ kho lưu trữ Hugging Face Hub
                  Nếu bạn muốn sử dụng mô hình lượng tử (dành cho máy tính có RAM dưới 16):

                  python3 -m mlx_lm.convert –hf-path meta-llama/Meta-Llama-3-8B-Instruct -q
                  Thao tác này sẽ lưu mô hình vào thư mục dự án của bạn tại mlx_model.

                  Nếu không thì:

                  python3 -m mlx_lm.generate –model meta-llama/Meta-Llama-3-8B-Instruct
                  2. Kiểm tra mô hình

                  python3 -m mlx_lm.generate –model model_path –prompt “xin chào”

                  Thực hiện

                  Để sử dụng mô hình đã tải xuống trong ứng dụng của bạn, bạn có thể sử dụng triển khai máy chủ do mlx-lm cung cấp. Điều này sẽ khởi động máy chủ cục bộ giống OpenAI trên http://localhost:8080 .

                  Điểm cuối: http://localhost:8080/v1/chat/completions

                  Các trường yêu cầu:

                  messages tin nhắn : Mảng các đối tượng tin nhắn có vai trò (ví dụ: người dùng, trợ lý) và nội dung (văn bản tin nhắn).
                  – role_mapping : Từ điển tùy chọn để tùy chỉnh tiền tố vai trò trong lời nhắc.
                  stop dừng : Chuỗi mã thông báo tùy chọn mà quá trình tạo sẽ dừng lại.
                  – max_tokens : Số nguyên tùy chọn cho số lượng mã thông báo tối đa cần tạo (mặc định: 100).
                  – stream : Boolean tùy chọn để chỉ ra liệu phản hồi có nên được truyền phát hay không (mặc định: false).
                  temperature nhiệt độ : Tùy chọn float cho nhiệt độ lấy mẫu (mặc định: 1.0).
                  – top_p : Giá trị float tùy chọn cho tham số lấy mẫu hạt nhân (mặc định: 1.0).
                  – repetition_penalty : Tùy chọn float để áp dụng hình phạt cho các mã thông báo lặp lại (mặc định: 1.0).
                  – repetition_context_size : Kích thước tùy chọn của cửa sổ ngữ cảnh cho hình phạt lặp lại (mặc định: 20).
                  – logit_bias : Tùy chọn ánh xạ ID mã thông báo từ điển với giá trị độ lệch của chúng.

                  Khởi động máy chủ

                  mlx_lm.server –model model_path

                  Trò chuyện bằng Python

                  Sau khi máy chủ chạy, bạn có thể gửi yêu cầu POST đến máy chủ. Sau đây là ví dụ về chatbot được tạo bằng Python:

                  import requests
                  import json
                  from typing import List, Dict

                  # Function to send a request to the server and get a response
                  def get_response(
                  server_url: str,
                  messages: List[Dict[str, str]],
                  temperature: float = 0.7,
                  top_p: float = 0.9,
                  max_tokens: int = 4096,
                  stream: bool = True,
                  ) -> str:
                  headers = {“Content-Type”: “application/json”}
                  data = {
                  “messages”: messages,
                  “temperature”: temperature,
                  “top_p”: top_p,
                  “max_tokens”: max_tokens,
                  “stream”: stream,
                  }

                  # Send POST request to the server
                  response = requests.post(
                  f”{server_url}/v1/chat/completions”,
                  headers=headers,
                  data=json.dumps(data),
                  stream=stream,
                  )
                  response.raise_for_status() # Ensure the request was successful

                  if stream:
                  content = “”
                  for line in response.iter_lines():
                  if line:
                  decoded_line = line.decode(“utf-8”).lstrip(“data: “)
                  try:
                  json_line = json.loads(decoded_line)
                  if “choices” in json_line and len(json_line[“choices”]) > 0:
                  delta = json_line[“choices”][0].get(“delta”, {})
                  content_piece = delta.get(“content”, “”)
                  content += content_piece
                  print(content_piece, end=“”, flush=True)
                  except json.JSONDecodeError:
                  continue
                  print() # Ensure the next prompt starts on a new line
                  return content
                  else:
                  result = response.json()
                  if “choices” in result and len(result[“choices”]) > 0:
                  return result[“choices”][0][“message”][“content”]else:
                  return “”

                  # Function to run the chatbot
                  def chatbot(
                  server_url: str,
                  system_instructions: str = “”,
                  temperature: float = 0.7,
                  top_p: float = 0.9,
                  max_tokens: int = 4096,
                  stream: bool = True,
                  ):
                  messages = [{“role”: “system”, “content”: system_instructions}]while True:
                  prompt = input(“User: “)
                  if prompt.lower() in [“exit”, “quit”]:
                  break
                  messages.append({“role”: “user”, “content”: prompt})
                  print(“Assistant: “, end=“”)
                  response = get_response(
                  server_url, messages, temperature, top_p, max_tokens, stream
                  )
                  messages.append({“role”: “assistant”, “content”: response})

                  if __name__ == “__main__”:
                  server_url = “http://localhost:8080”
                  chatbot(server_url=server_url)

                  Kết luận

                  framework MLX cung cấp giải pháp mạnh mẽ và hiệu quả để chạy các mô hình ngôn ngữ lớn trên silicon của Apple. Thiết kế thân thiện với người dùng, lấy cảm hứng từ các framework như NumPy và PyTorch, giúp các nhà nghiên cứu và nhà phát triển dễ tiếp cận. Bất chấp những hạn chế của nó, khả năng đào tạo và suy luận mô hình quy mô lớn của MLX khiến nó trở thành một công cụ có giá trị trong bối cảnh học máy.

                  Tài liệu tham khảo
                  https://github.com/ml-explore/mlx-examples/blob/main/llms/mlx_lm
                  https://github.com/ml-explore/mlx-examples/blob/main/llms/mlx_lm/SERVER.md
                  https://github.com/ml-explore/mlx?tab=readme-ov-file
                  https://huggingface.co/docs/hub/en/mlx

                  https://medium.com/@manuelescobar-dev/running-large-language-models-llama-3-on-apple-silicon-with-apples-mlx-framework-4f4ee6e15f31

                  Khung Nexa suy luận cục bộ trên thiết bị

                  Nexa SDK là một khuôn khổ suy luận cục bộ trên thiết bị cho các mô hình ONNX và GGML, hỗ trợ tạo văn bản, tạo hình ảnh, mô hình ngôn ngữ thị giác (VLM), mô hình ngôn ngữ âm thanh, khả năng chuyển giọng nói thành văn bản (ASR) và chuyển văn bản thành giọng nói (TTS). Có thể cài đặt thông qua Python Package hoặc Executable Installer.

                  Running Local LLMs and VLMs on the Raspberry Pi

                  https://github.com/NexaAI/nexa-sdk

                  Thiết lập máy chủ LLM của riêng bạn bằng MLX Server, Chainlit và Llama 3.1

                  Sau đây là bản demo về máy chủ LLM cục bộ chạy thành công trên MacBook Pro M2 2022 với RAM 16 GB và Python 3.12.4. Để chạy MLX Server trơn tru, thiết bị của bạn phải đáp ứng các yêu cầu sau:

                  Chip silicon của Apple (dòng M)
                  Phiên bản Python gốc >= 3.8
                  Phiên bản macOS >= 13.3 (Ventura)

                  https://github.com/flaviodelgrosso/mlx-chainlit-llama3

                  https://anakin.ai/blog/how-to-run-llama-3-3-70b-locally-mac-windows-linux/

                  Cài đặt

                  python3 -m venv venv
                  source venv/bin/activate
                  pip install -r requirements.txt

                  Máy chủ đang chạy

                  python -m mlx_lm.server –model mlx-community/Meta-Llama-3.1-8B-Instruct-4bit –log-level DEBUG

                  Thao tác này sẽ khởi động máy chủ MLX và sẽ tải xuống LLM nếu nó chưa được tải xuống từ Hugging Face. Kiểm tra liên kết này để biết thêm thông tin về MLX.

                  Ứng dụng đang chạy

                  chainlit run app.py

                  Thao tác này sẽ khởi động ứng dụng Chainlit.

                  llamafile cho phép bạn phân phối và chạy LLM bằng một tệp duy nhất

                  Cách dễ nhất để tự mình thử là tải xuống llamafile mẫu của chúng tôi cho mô hình LLaVA (giấy phép: LLaMA 2 , OpenAI ). LLaVA là một LLM mới có thể làm nhiều việc hơn là chỉ trò chuyện; bạn cũng có thể tải hình ảnh lên và hỏi nó các câu hỏi về chúng. Với llamafile, tất cả những điều này đều diễn ra cục bộ; không có dữ liệu nào rời khỏi máy tính của bạn.

                  Tải xuống llava-v1.5-7b-q4.llamafile (4,29 GB).

                  Mở terminal của máy tính.

                  Nếu bạn đang sử dụng macOS, Linux hoặc BSD, bạn sẽ cần cấp quyền cho máy tính của mình để thực thi tệp mới này. (Bạn chỉ cần thực hiện việc này một lần.)

                  chmod +x llava-v1.5-7b-q4.llamafile
                  Nếu bạn sử dụng Windows, hãy đổi tên tệp bằng cách thêm “.exe” vào cuối.

                  Chạy llamafile. Ví dụ:

                  ./llava-v1.5-7b-q4.llamafile
                  Trình duyệt của bạn sẽ tự động mở và hiển thị giao diện trò chuyện. (Nếu không, chỉ cần mở trình duyệt và trỏ tới http://localhost:8080 )

                  Khi bạn trò chuyện xong, hãy quay lại thiết bị đầu cuối và nhấn Control-C để tắt llamafile.

                  chạy Ollama và thư viện Swift SwiftOpenAI

                  Tôi không ngờ việc có thể chạy các mô hình mã nguồn mở cục bộ trong ứng dụng Mac OS lại dễ dàng đến vậy, đây sẽ là hướng dẫn ngắn về cách thực hiện việc này bằng Ollama và thư viện Swift SwiftOpenAI.

                  Năm nay, Ollama đã xây dựng khả năng tương thích cho OpenAI Chat Completions API . Điều này cho phép bạn sử dụng các mô hình cục bộ với cùng API mà bạn sẽ sử dụng để tương tác với các mô hình OpenAI.

                  Bạn có thể sử dụng các mô hình mạnh mẽ nhưllama3hoặcMistraltrong ứng dụng của mình bằng cách làm theo các bước đơn giản sau!

                  Bước 1:

                  Để sử dụngOllama,trước tiên bạn cần tải xuống từ trang web chính thức của họtại đây.

                  Bước 2:

                  Bây giờ bạn cần tải xuống mô hình bạn muốn sử dụng. Ví dụ, điều này sẽ tải xuống Llama 3:ollama pull llama3

                  Bước 3:

                  Bây giờ bạn có thể sử dụng terminal của mình nếu bạn muốn tương tác với LLM. Bạn chỉ cần làm như sau:ollama run llama3

                  Bước 4:

                  Nếu bạn muốn sử dụng điều này trong một ứng dụng, bạn có thể sử dụngSwiftOpenAItrong máy khách của mình. Tất cả những gì bạn cần làm là thêm gói dưới dạng phụ thuộc vào dự án của bạn và sau đó…

                  import SwiftOpenAI 
                  
                  // Khởi tạo một dịch vụ và sử dụng URL localhost do Ollama cung cấp. 
                  let service =  OpenAIServiceFactory .service(baseURL: "http://localhost:11434" )

                  Sau đó, bạn có thể sử dụng API hoàn thành như sau:

                  cho lời nhắc =  "Kể cho tôi một câu chuyện cười" 
                  let prompt = "Tell me a joke"
                  let parameters = ChatCompletionParameters(messages: [.init(role: .user, content: .text(prompt))], model: .custom("llama3"))
                  let chatCompletionObject = service.startStreamedChat(parameters: parameters)
                  

                  Đó là tất cả những gì bạn cần để chạy các mô hình cục bộ bên trong ứng dụng của riêng bạn! Để biết bản demo về cách sử dụng nó trong iOS, hãy kiểm tradự án ví dụ trong kho lưu trữ này.

                  https://www.llama.com/docs/llama-everywhere/running-meta-llama-on-mac/

                  https://github.com/huggingface/transformers.js-examples/tree/main/llama-3.2-webgpu

                  Chạy cục bộ LM Studio và Anything LLM Desktop

                  LM Studio: Công cụ đa năng này cho phép bạn khám phá và chạy các LLM khác nhau cục bộ trên máy của mình.
                  Anything LLM: Một ứng dụng máy tính để bàn giúp nâng cao khả năng của LM Studio, cung cấp một bộ toàn diện để tương tác với các tài liệu, trang web, v.v.
                  Cả hai công cụ LM Studio và Anything LLM đều là mã nguồn mở, cho phép bạn tự do sử dụng và thậm chí đóng góp vào sự phát triển của chúng.

                  Thiết lập LM Studio

                  LM Studio cực kỳ dễ để bắt đầu: Chỉ cần cài đặt, tải xuống một mô hình và chạy nó. Có rất nhiều hướng dẫn trực tuyến. Ngoài ra, nó sử dụng llama.cpp, về cơ bản có nghĩa là bạn phải sử dụng các mô hình có định dạng tệp .gguf. Đây là định dạng phổ biến nhất hiện nay và có hỗ trợ rất tốt. Đối với mô hình nào để chạy, nó phụ thuộc vào bộ nhớ GPU của bạn. Về cơ bản:

                  4GB VRAM -> Chạy Gemma 2B, Phi 3 Mini ở Q8 hoặc Llama 3 8B/ Gemma 9B ở Q4
                  8GB VRAM -> Chạy Llama 3 8B/ Gemma 9B ở Q8
                  16GB VRAM -> Chạy Gemma 27B/ Command R 35B ở Q4
                  24GB VRAM -> Chạy Gemma 27B ở Q6 hoặc Llama 3 70B ở Q2 (Số lượng thấp, không khuyến khích để mã hóa)

                  Lượng tử hóa Quantizations (Q2, Q4, v.v.) giống như phiên bản nén của một mô hình. Q8 có chất lượng rất cao (bạn sẽ không nhận thấy nhiều sự khác biệt). Q6 cũng khá cao, gần bằng Q8. Q4 ở mức trung bình nhưng vẫn khá tốt. Q2 ổn đối với các mô hình lớn cho các tác vụ không phải mã hóa nhưng nó khá tàn bạo và làm giảm trí thông minh của chúng. (Đối với các mô hình nhỏ, chúng bị ‘nén’ quá nhiều và mất đi rất nhiều trí thông minh)

                  Đối với vector hóa, LM studio cung cấp một số hỗ trợ cho việc nhúng mô hình: họ đề xuất Nomic Embed v1.5, nhẹ và khá tốt. Thêm vào đó, bạn có thể dễ dàng sử dụng vì nó cung cấp API cục bộ giống OpenAI.
                  Bước 1: Tải xuống và cài đặt
                  Đầu tiên, hãy tải xuống LM Studio cho hệ điều hành của bạn. Sau khi quá trình tải xuống hoàn tất, hãy cài đặt nó theo các bước thông thường.
                  Bước 2: Khám phá các mô hình
                  Sau khi cài đặt, hãy mở LM Studio. Bạn sẽ đến một trang khám phá giới thiệu các mô hình phổ biến khác nhau. Đối với hướng dẫn này, hãy tải xuống mô hình Mistal 7B Instruct, một phiên bản lượng tử 4 bit.
                  Việc tải xuống các mô hình có thể tốn thời gian, vì vậy hãy bắt đầu quá trình này sớm. Sau khi tải xuống, bạn có thể tìm thấy các mô hình của mình trong tab “Mô hình”.
                  Bước 3: Chạy mô hình
                  Để kiểm tra mô hình của bạn, hãy chuyển đến biểu tượng bong bóng trò chuyện và chọn mô hình bạn đã tải xuống. Bạn có thể đặt trước lời nhắc hệ thống và bật tính năng giảm tải GPU nếu máy của bạn hỗ trợ nó.

                  Tăng cường với Anything LLM

                  Nếu bạn biết LLM nào bạn muốn và tất cả các tùy chọn liên quan đến việc điều chỉnh hiệu suất mô hình, như chuyển tải GPU và các tùy chọn tương tự, thì bạn có thể sử dụng LMStudio + AnythingLLM cùng lúc. AnythingLLM dành cho RAG, Agents và tooling, và LMStudio chỉ để chạy mô hình bạn muốn với các thiết lập đã xác định của bạn. Nó tiên tiến hơn một bước so với AnythingLLM độc lập.

                  AnythingLLM hoạt động như thế nào

                  Một không gian làm việc được tạo. LLM chỉ có thể “xem” các tài liệu được nhúng trong không gian làm việc này. Nếu một tài liệu không được nhúng thì LLM không có cách nào có thể xem hoặc truy cập nội dung của tài liệu đó.

                  Bạn tải lên một tài liệu, điều này giúp bạn có thể “Chuyển vào không gian làm việc” hoặc “nhúng” tài liệu. Tải lên sẽ lấy tài liệu của bạn và biến nó thành văn bản – thế là xong.

                  Bạn “Di chuyển tài liệu đến không gian làm việc”. Thao tác này sẽ lấy văn bản từ bước 2 và chia thành các phần dễ tiêu hóa hơn. Sau đó, các khối này sẽ được gửi đến mô hình nhúng của bạn và chuyển thành một danh sách các số, được gọi là chuỗi số này được lưu. vào cơ sở dữ liệu vectơ của bạn và về cơ bản là cách RAG hoạt động. Không có gì đảm bảo rằng văn bản có liên quan sẽ ở cùng nhau trong bước này!

                  Bạn nhập câu hỏi vào hộp trò chuyện và nhấn gửi.

                  Câu hỏi của bạn sau đó sẽ được nhúng giống như văn bản tài liệu của bạn.

                  Sau đó, cơ sở dữ liệu vectơ sẽ tính toán vectơ đoạn “gần nhất”. AnythingLLM lọc bất kỳ đoạn văn bản “có điểm thấp” nào (bạn có thể sửa đổi phần này). Mỗi vectơ có văn bản gốc được lấy từ đó. Đây không phải là một ngữ nghĩa thuần túy. quá trình để cơ sở dữ liệu vectơ không “hiểu ý bạn”. Đây là một quá trình toán học sử dụng công thức “Khoảng cách Cosine”. Tuy nhiên, đây là nơi mô hình nhúng được sử dụng và các cài đặt AnythingLLM khác có thể tạo ra sự khác biệt lớn nhất. phần tiếp theo.

                  Bất kỳ đoạn nào được coi là hợp lệ sẽ được chuyển đến LLM dưới dạng văn bản gốc. Những văn bản đó sau đó sẽ được thêm vào LLM là “Thông báo hệ thống” của nó. Ngữ cảnh này được chèn bên dưới lời nhắc hệ thống của bạn cho không gian làm việc đó.

                  LLM sử dụng lời nhắc hệ thống + ngữ cảnh, truy vấn và lịch sử của bạn để trả lời câu hỏi một cách tốt nhất có thể.

                  Bước 1: Tải xuống và cài đặt
                  Tiếp theo, tải xuống Anything LLM cho hệ điều hành của bạn từ trang web chính thức. Cài đặt nó như bạn làm với bất kỳ phần mềm nào khác.
                  Bước 2: Cấu hình ban đầu
                  Khi bạn mở Anything LLM lần đầu tiên, bạn sẽ được nhắc cấu hình phiên bản. Chọn LM Studio làm LLM của bạn và nhập URL cơ sở cho máy chủ cục bộ của LM Studio.
                  Để tìm URL này, hãy chuyển đến tab Máy chủ cục bộ trong LM Studio. Khởi động máy chủ và sao chép URL được cung cấp.
                  Bước 3: Thêm tài liệu và trang web
                  Với Anything LLM, bạn có thể tương tác với nhiều tài liệu và trang web khác nhau. Tải lên tệp PDF, tài liệu văn bản hoặc quét trang web trực tiếp từ giao diện.

                  Cấu hình nâng cao

                  Nhúng vào cơ sở dữ liệu vector: Bất cứ điều gì LLM bao gồm mô hình nhúng và cơ sở dữ liệu vector của riêng nó, đảm bảo tất cả dữ liệu của bạn vẫn ở chế độ cục bộ và riêng tư. Trong quá trình thiết lập, bạn có thể chọn sử dụng các tính năng tích hợp sẵn này hoặc kết nối với các dịch vụ bên ngoài.

                  Không gian làm việc tùy chỉnh: Tạo không gian làm việc tùy chỉnh cho các dự án khác nhau. Ví dụ: tạo một không gian làm việc có tên là “Dự án X” và tải lên tất cả các tài liệu và dữ liệu web có liên quan. LLM sẽ sử dụng ngữ cảnh này để đưa ra câu trả lời chính xác hơn.

                  Ứng dụng trong thế giới thực: Ví dụ: Quét một trang web
                  Để thu thập thông tin từ một trang web cụ thể, hãy sử dụng tính năng cạo trong Anything LLM. Sau khi cạo, nhúng dữ liệu vào mô hình. Bây giờ, khi bạn đặt câu hỏi LLM liên quan đến nội dung của trang web đó, nó sẽ cung cấp các câu trả lời sáng suốt.

                  Cân nhắc về hiệu suất

                  Yêu cầu phần cứng
                  Mặc dù hướng dẫn này trình bày các mô hình đang chạy trên CPU, nhưng việc có GPU sẽ cải thiện đáng kể hiệu suất. Ví dụ, các mô hình như Llama 2 sẽ chạy nhanh hơn nhiều trên các máy được trang bị GPU.
                  Lựa chọn mô hình
                  Việc lựa chọn mô hình ảnh hưởng đến hiệu suất. Các mô hình nhỏ hơn như phiên bản 7 tỷ tham số của Llama 2 dễ quản lý hơn trên phần cứng kém mạnh mẽ hơn nhưng có thể cung cấp các phản hồi ít phức tạp hơn so với các mô hình lớn hơn.

                  https://pyimagesearch.com/2024/06/24/integrating-local-llm-frameworks-a-deep-dive-into-lm-studio-and-anythingllm/

                  Thêm tiện ích cho lập trình

                  Vô Extention của Visual Studio code thêm Cline (prev. Claude). Thêm model code, rồi xong.

                  Những Model

                  DeepSeek của Trung Quốc đã phát hành mô hình mã nguồn mở DeepSeek-v3, mô hình này đã vượt trội hơn tất cả các tên tuổi lớn như Claude3.5 Sonnet, GPT-4o, Qwen2.5 Coder và các tên tuổi khác. có kích thước ấn tượng là 685 tỷ tham số, 60 token/giây. Nếu bạn chỉ muốn trò chuyện, mô hình được lưu trữ miễn phí trên kênh trò chuyện chính thức của deepseek:https://www.deepseek.com/

                  Jan

                  Jan là một ứng dụng điện tử có các tính năng tương tự như LM Studio. Nó làm cho AI trở nên mở và dễ tiếp cận với tất cả mọi người bằng cách biến máy móc của người tiêu dùng thành máy tính AI. Vì đây là một dự án nguồn mở, hỗ trợ các kiến ​​trúc phổ quát GPUs (fast), Apple M-series (fast), Apple Intel, Linux Debian và Windows x64. Sau đây là phân tích các tính năng chính của Jan.

                  Cục bộ : Bạn có thể chạy các mô hình AI ưa thích trên các thiết bị mà không cần kết nối chúng với Internet.
                  Các mô hình sẵn sàng sử dụng : Sau khi tải xuống Jan, bạn sẽ nhận được một bộ các mô hình đã cài đặt để bắt đầu. Ngoài ra còn có khả năng tìm kiếm các mô hình cụ thể.
                  Nhập mô hình : Hỗ trợ nhập mô hình từ các nguồn như Hugging Face.
                  Miễn phí, đa nền tảng và mã nguồn mở : Jan hoàn toàn miễn phí, mã nguồn mở và hoạt động trên Mac, Windows và Linux.
                  Tùy chỉnh tham số suy luận : Điều chỉnh các tham số mô hình như Mã thông báo tối đa, nhiệt độ, luồng, hình phạt tần suất, v.v. Tất cả các tùy chọn, cách sử dụng mô hình và cài đặt đều được lưu cục bộ trên máy tính của bạn.
                  Tiện ích mở rộng : Jan hỗ trợ các tiện ích mở rộng như TensortRT và Inference Nitro để tùy chỉnh và nâng cao mô hình AI của bạn.
                  Lợi ích của việc sử dụng Jan
                  Jan cung cấp một giao diện sạch sẽ và đơn giản để tương tác với LLM và nó lưu trữ tất cả dữ liệu và thông tin xử lý của bạn cục bộ. Nó có hơn bảy mươi mô hình ngôn ngữ lớn đã được cài đặt sẵn để bạn sử dụng. Tính khả dụng của các mô hình sẵn sàng sử dụng này giúp bạn dễ dàng kết nối và tương tác với các API từ xa như OpenAI và Mistral. Jan cũng có một cộng đồng GitHub , Discord và Hugging Face tuyệt vời để theo dõi và yêu cầu trợ giúp. Tuy nhiên, giống như tất cả các công cụ LLM, các mô hình hoạt động nhanh hơn trên máy Mac Apple Silicon so với trên máy Intel.

                  GPT4All

                  GPT4All có thể chạy LLM trên phần cứng tiêu dùng chính như chip Mac M-Series, GPU AMD và NVIDIA. Sau đây là các tính năng chính của nó.

                  Quyền riêng tư là trên hết : Chỉ lưu trữ thông tin trò chuyện riêng tư và nhạy cảm cũng như lời nhắc trên máy của bạn.
                  Không cần Internet : Hoạt động hoàn toàn ngoại tuyến.
                  Khám phá mô hình : Tính năng này cho phép các nhà phát triển duyệt và tải xuống các loại LLM khác nhau để thử nghiệm. Bạn có thể chọn khoảng 1000 mô hình ngôn ngữ nguồn mở từ các tùy chọn phổ biến như LLama, Mistral, v.v.
                  Tài liệu cục bộ : Bạn có thể cho phép LLM cục bộ của mình truy cập dữ liệu nhạy cảm bằng các tài liệu cục bộ như .pdfvà .txtkhông cần dữ liệu rời khỏi thiết bị của bạn cũng như không cần mạng.
                  Tùy chọn tùy chỉnh : Cung cấp một số tùy chọn điều chỉnh chatbot như nhiệt độ, kích thước lô, độ dài ngữ cảnh, v.v.
                  Phiên bản doanh nghiệp : GPT4ALL cung cấp gói doanh nghiệp với tính năng bảo mật, hỗ trợ và giấy phép theo từng thiết bị để mang AI cục bộ đến với doanh nghiệp.

                  Ứng dụng thu thập dữ liệu người dùng ẩn danh về phân tích sử dụng và chia sẻ trò chuyện. Tuy nhiên, người dùng có tùy chọn tham gia hoặc không tham gia. Sử dụng GPT4ALL, các nhà phát triển được hưởng lợi từ lượng người dùng lớn, cộng đồng GitHub và Discord.

                  Qwen2.5-Coder chạy cục bộ

                  Qwen2.5-Coder xây dựng dựa trên nền tảng của các phiên bản trước đó đồng thời giới thiệu những cải tiến đáng kể về hiệu quả và hiệu suất của mô hình. Chuỗi mô hình có nhiều kích cỡ, mỗi kích cỡ được tối ưu hóa cho các trường hợp sử dụng và ràng buộc tính toán khác nhau. Kiến trúc sử dụng thiết kế máy biến áp đã sửa đổi với các cơ chế chú ý nâng cao và sử dụng tham số được tối ưu hóa.
                  Triển khai LLM trên Apple Silicon (M1, M2, M3, M4)
                  Ollama cung cấp một phương pháp hợp lý để chạy Qwen2.5-Coder cục bộ. Sau đây là quy trình thiết lập chi tiết:

                  # Cài đặt Ollama
                  curl – fsSL < https: / / ollama.com / install.sh > | sh

                  # Kéo Qwen2 .5 – Mô hình Coder
                  ollama pull qwen2 .5 – coder

                  # Tạo một Modelfile tùy chỉnh cho các cấu hình cụ thể
                  cat << EOF > Modelfile
                  FROM qwen2.5coder

                  # Cấu hình các tham số mô hình
                  PARAMETER temperature 0.7
                  PARAMETER top_p 0.9
                  PARAMETER repeat_penalty 1.1
                  PARAMETER context_length 32768

                  # Đặt thông báo hệ thống You are an expert programming assistant.

                  SYSTEM “Bạn là trợ lý lập trình chuyên gia.”
                  EOF

                  # Tạo mô hình tùy chỉnh
                  ollama create qwen2 .5 – coder – custom – f Modelfile

                  Phân tích hiệu suất Coder Qwen2.5

                  Đánh giá hiệu suất cho thấy khả năng ấn tượng trên nhiều tác vụ mã hóa khác nhau. Mô hình này chứng minh sức mạnh đặc biệt trong việc hoàn thành mã, phát hiện lỗi và tạo tài liệu. Khi chạy trên phần cứng tiêu dùng với NVIDIA RTX 3090, mô hình 7B đạt thời gian suy luận trung bình là 150ms cho các tác vụ hoàn thành mã, đồng thời duy trì độ chính xác cao trên nhiều ngôn ngữ lập trình.

                  Triển khai Qwen2.5-Coder bằng Python
                  Sau đây là một ví dụ triển khai toàn diện sử dụng Python và API HTTP của Ollama:

                  import requests
                  import json

                  class Qwen25Coder :
                  def __init__ ( self, base_url= “<http://localhost:11434>” ):
                  self.base_url = base_url
                  self.api_generate = f” {base_url} /api/generate”

                  def generate_code ( self, prompt, model= “qwen2.5-coder-custom” ):
                  payload = {
                  “model” : model,
                  “prompt” : prompt,
                  “stream” : False ,
                  “options” : {
                  “temperature” : 0.7 ,
                  “top_p” : 0.9 ,
                  “repeat_penalty” : 1.1
                  }
                  }

                  response = requests.post(self.api_generate, json=payload)
                  return response.json()[ “response” ]

                  def code_review ( self, code ):
                  prompt = f”””Xem lại mã sau và cung cấp phản hồi chi tiết:

                  “`
                  {code}
                  “`

                  Vui lòng phân tích:
                  1. Chất lượng mã
                  2. Lỗi tiềm ẩn
                  3. Ý nghĩa về hiệu suất
                  4. Cân nhắc về bảo mật”””

                  return self.generate_code(prompt)

                  # Ví dụ về cách sử dụng
                  coder = Qwen25Coder()

                  # Ví dụ về hoàn thành mã
                  code_snippet = “””
                  def calculate_fibonacci(n):
                  if n <= 0:
                  return [] elif n == 1:
                  return [0] “””

                  completion = coder.generate_code( f”Hoàn thành hàm chuỗi Fibonacci này: {code_snippet} )

                  Việc triển khai ở trên cung cấp một giao diện mạnh mẽ để tương tác với Qwen2.5-Coder thông qua Ollama. Qwen25Coder Lớp này đóng gói các hoạt động chung và cung cấp một API sạch cho các tác vụ tạo và xem xét mã. Mã này bao gồm các tùy chọn xử lý lỗi và cấu hình phù hợp, giúp nó phù hợp với môi trường sản xuất.

                  Cấu hình và tối ưu hóa nâng cao

                  Khi triển khai Qwen2.5-Coder trong môi trường sản xuất, một số chiến lược tối ưu hóa có thể cải thiện đáng kể hiệu suất. Sau đây là ví dụ cấu hình chi tiết sử dụng các tính năng nâng cao của Ollama:# qwen25-config.yaml
                  models:
                  qwen2.5-coder:
                  type: llama
                  parameters:
                  context_length: 32768
                  num_gpu: 1
                  num_thread: 8
                  batch_size: 32
                  quantization:
                  mode: ‘int8’
                  cache:
                  type: ‘redis’
                  capacity: ’10gb’
                  runtime:
                  compute_type: ‘float16’
                  tensor_parallel: true

                  Cấu hình này cho phép thực hiện một số tối ưu hóa quan trọng:

                  • Song song hóa tenxơ tự động cho hệ thống đa GPU
                  • Lượng tử hóa Int8 để giảm thiểu dấu chân bộ nhớ
                  • Bộ nhớ đệm phản hồi dựa trên Redis
                  • Float16 tính toán để cải thiện hiệu suất
                  • Tối ưu hóa cài đặt kích thước luồng và lô

                  Tích hợp với quy trình phát triển: Qwen2.5-Coder có thể được tích hợp liền mạch vào quy trình phát triển hiện có thông qua nhiều tiện ích mở rộng IDE và công cụ dòng lệnh.

                  Giám sát và tối ưu hóa hiệu suất

                  Để đảm bảo hiệu suất tối ưu trong môi trường sản xuất, việc triển khai giám sát phù hợp là rất quan trọng. Sau đây là ví dụ về thiết lập giám sát:import time
                  import psutil
                  import logging
                  from dataclasses import dataclass
                  from typing import Optional

                  @dataclass
                  class PerformanceMetrics:
                  inference_time: float
                  memory_usage: float
                  token_count: int
                  success: bool
                  error: Optional[str] = None

                  class Qwen25CoderMonitored(Qwen25Coder):
                  def __init__(self, *args, **kwargs):
                  super().__init__(*args, **kwargs)
                  self.logger = logging.getLogger(“qwen2.5-coder”)

                  def generate_code_with_metrics(self, prompt: str) -> tuple[str, PerformanceMetrics]:
                  start_time = time.time()
                  initial_memory = psutil.Process().memory_info().rss / 1024 / 1024

                  try:
                  response = self.generate_code(prompt)
                  success = True
                  error = None
                  except Exception as e:
                  response = “”
                  success = False
                  error = str(e)

                  end_time = time.time()
                  final_memory = psutil.Process().memory_info().rss / 1024 / 1024

                  metrics = PerformanceMetrics(
                  inference_time=end_time – start_time,
                  memory_usage=final_memory – initial_memory,
                  token_count=len(response.split()),
                  success=success,
                  error=error
                  )

                  self.logger.info(f“Performance metrics: {metrics}”)
                  return response, metrics

                  Việc triển khai giám sát này cung cấp thông tin chi tiết về các đặc điểm hiệu suất của mô hình, bao gồm thời gian suy luận, mức sử dụng bộ nhớ và tỷ lệ thành công. Các số liệu có thể được sử dụng để tối ưu hóa tài nguyên hệ thống và xác định các điểm nghẽn tiềm ẩn.

                  Hệ sinh thái Qwen2.5-Coder tiếp tục phát triển với những cải tiến được lên kế hoạch trong một số lĩnh vực chính. Mô hình tham số 32B sắp tới hứa hẹn khả năng nâng cao trong khi vẫn duy trì các yêu cầu về tài nguyên thực tế. Cộng đồng phát triển đang tích cực làm việc trên các phương pháp tinh chỉnh chuyên biệt cho các ngôn ngữ lập trình và khuôn khổ cụ thể.

                  Kiến trúc của mô hình được thiết kế để đáp ứng những cải tiến trong tương lai về xử lý độ dài ngữ cảnh và hiệu quả bộ nhớ. Nghiên cứu đang diễn ra về các cơ chế chú ý hiệu quả hơn và các kỹ thuật tối ưu hóa tham số cho thấy các phiên bản trong tương lai có thể đạt hiệu suất thậm chí còn tốt hơn với yêu cầu tài nguyên thấp hơn.

                  Thông qua bộ tính năng toàn diện và các đặc điểm hiệu suất mạnh mẽ, Qwen2.5-Coder đại diện cho một bước tiến đáng kể trong các mô hình ngôn ngữ tập trung vào mã. Cho dù được triển khai cho các tác vụ phát triển riêng lẻ hay được tích hợp vào các hệ thống quy mô doanh nghiệp, mô hình này cung cấp các khả năng mạnh mẽ để tạo, phân tích và tối ưu hóa mã. Sự kết hợp với Ollama làm cho nó đặc biệt dễ tiếp cận để triển khai cục bộ trong khi vẫn duy trì hiệu suất cấp độ chuyên nghiệp.

                  https://sebastian-petrus.medium.com/how-to-run-qwen2-5-coder-locally-a-comprehensive-guide-a3bc0284714a

                  Ví dụ: xây dựng huấn luyện viên thể hình

                  Trong thời đại công nghệ thông tin này, tại sao phải trả tiền cho một huấn luyện viên thể hình khi bạn có thể tự xây dựng huấn luyện viên AI của riêng mình? Hãy tưởng tượng bạn có một kế hoạch tập luyện tùy chỉnh được thiết kế riêng cho mục tiêu, tình trạng sức khỏe và lối sống của bạn. Sử dụng sức mạnh của AI, chúng tôi có thể tạo ra một thói quen tập thể dục được cá nhân hóa, phù hợp với tiến trình của bạn và giúp bạn luôn có động lực!

                  Xây dựng một huấn luyện viên thể hình AI có khả năng:

                  • Thu thập dữ liệu người dùng như tuổi, cân nặng và mục tiêu thể dục.
                  • Tạo thói quen tập thể dục được cá nhân hóa.
                  • Thu thập phản hồi của người dùng sau mỗi phiên và cập nhật kế hoạch cho phù hợp.
                  • Theo dõi tiến trình của bạn theo thời gian.
                  • Động viên bạn bằng sự khích lệ và lời khuyên.

                  LangGraph giống như bộ não đằng sau nhiều tác nhân AI làm việc cùng nhau để hoàn thành công việc. LangGraph được thiết kế để tạo ra các quy trình làm việc có trạng thái cho các tác nhân. Điều đó có nghĩa là, thay vì thực hiện mọi thứ theo cách tuyến tính, như thực thi mã đơn giản, nó xử lý từng bước của ứng dụng của bạn như một trạng thái trong biểu đồ . Các trạng thái này giao tiếp với nhau theo một luồng logic, giống như một loạt các phòng được kết nối trong một tòa nhà.

                  Mỗi “phòng” hoặc trạng thái này có thể thực hiện một chức năng chuyên biệt và LangGraph đảm bảo chúng hợp tác nhịp nhàng. Nếu bạn nghĩ về điều đó, việc tạo thói quen tập thể dục không chỉ là liệt kê các bài tập. Mà là về:

                  Hiểu được mục tiêu và hạn chế cá nhân của bạn.
                  Thiết kế kế hoạch tập luyện dựa trên loại cơ thể, sở thích và mục tiêu thể dục của bạn.
                  Điều chỉnh kế hoạch đó khi bạn đưa ra phản hồi hoặc tiến triển theo thời gian.
                  Thúc đẩy bạn bằng cách theo dõi tiến độ thực hiện của bạn.
                  Mỗi trạng thái này là một trạng thái riêng biệt và LangGraph cho phép tôi xử lý chúng một cách độc lập trong khi vẫn duy trì được bức tranh toàn cảnh.

                  Bước 1: Thiết lập Huấn luyện viên thể hình AI
                  AI Fitness Coach sẽ hoạt động như một loạt các tác nhân, mỗi tác nhân chịu trách nhiệm cho một nhiệm vụ khác nhau, chẳng hạn như thu thập thông tin đầu vào của người dùng, tạo thói quen tập thể dục, phân tích phản hồi và theo dõi tiến trình. Các tác nhân này hợp tác để tạo ra một huấn luyện viên thể dục tương tác và thích ứng.

                  from typing import Annotated, TypedDict, List
                  from langgraph.graph import StateGraph, END
                  from langchain_community.chat_models import ChatOllama
                  from langchain_core.prompts import ChatPromptTemplate
                  from langchain_core.output_parsers import StrOutputParser
                  from langgraph.graph.message import add_messages
                  from langchain_core.messages import HumanMessage, AIMessage
                  import json

                  # State definition
                  class State(TypedDict):
                  user_data: dict
                  fitness_plan: str
                  feedback: str
                  progress: List[str] messages: Annotated[list, add_messages]

                  # Utility function to get Ollama LLM
                  def get_ollama_llm(model_name=“tinyllama”):
                  return ChatOllama(model=model_name)

                  Ở đây, chúng tôi định nghĩa lớp State lưu trữ dữ liệu người dùng, kế hoạch thể dục, phản hồi và tiến trình. Chúng tôi cũng tạo một hàm tiện ích để lấy mô hình Ollama để tạo văn bản.

                  Bước 2: Tác nhân nhập liệu của người dùng
                  Bước đầu tiên là thu thập dữ liệu người dùng, chẳng hạn như tuổi, cân nặng và mục tiêu thể dục, để tạo hồ sơ người dùng. Hồ sơ này được cấu trúc dưới dạng JSON để dễ xử lý.

                  def user_input_agent(state: State, llm):
                  prompt = ChatPromptTemplate.from_template(
                  “””You are an AI fitness coach assistant. Process the following user information:

                  {user_input}

                  Create a structured user profile based on this information. Include all relevant details for creating a personalized fitness plan.
                  Return the profile as a valid JSON string.”””
                  )
                  chain = prompt | llm | StrOutputParser()
                  user_profile = chain.invoke({“user_input”: json.dumps(state[“user_data”])})

                  try:
                  state[“user_data”] = json.loads(user_profile)
                  except json.JSONDecodeError:
                  pass
                  return state

                  Tác nhân này xử lý thông tin đầu vào của người dùng (như tuổi, cân nặng và sở thích tập luyện) và tạo ra hồ sơ có cấu trúc mà huấn luyện viên thể hình sẽ sử dụng để xây dựng kế hoạch tập luyện.

                  Bước 3: Tác nhân tạo ra thói quen
                  Sau khi có hồ sơ người dùng, đã đến lúc tạo một kế hoạch thể dục được cá nhân hóa. Tác nhân này sẽ tạo ra một kế hoạch bao gồm các loại bài tập, thời lượng, cường độ và thậm chí cả ngày nghỉ.

                  def routine_generation_agent(state: State, llm):
                  prompt = ChatPromptTemplate.from_template(
                  “””You are an AI fitness coach. Create a personalized fitness routine based on the following user data:

                  {user_data}

                  Create a detailed weekly fitness plan that includes:
                  1. Types of exercises
                  2. Duration and frequency of workouts
                  3. Intensity levels
                  4. Rest days
                  5. Any dietary recommendations”””
                  )
                  chain = prompt | llm | StrOutputParser()
                  plan = chain.invoke({“user_data”: json.dumps(state[“user_data”])})
                  state[“fitness_plan”] = plan
                  return state

                  Tác nhân này cung cấp một kế hoạch tập thể dục hàng tuần có cấu trúc phù hợp với hồ sơ của người dùng. Chương trình tập luyện sẽ bao gồm tim mạch, rèn luyện sức mạnh hoặc bất kỳ sở thích nào mà người dùng lựa chọn.

                  Bước 4: Phản hồi và điều chỉnh
                  Sau mỗi buổi tập, người dùng có thể đưa ra phản hồi. Dựa trên phản hồi này, huấn luyện viên AI có thể điều chỉnh thói quen tập luyện để phù hợp hơn với nhu cầu của người dùng.

                  def feedback_collection_agent(state: State, llm):
                  prompt = ChatPromptTemplate.from_template(
                  “””Analyze the following user feedback on their recent workout session:

                  Current fitness plan: {current_plan}
                  User feedback: {user_feedback}

                  Suggest any immediate adjustments.”””
                  )
                  chain = prompt | llm | StrOutputParser()
                  feedback_summary = chain.invoke({“current_plan”: state[“fitness_plan”], “user_feedback”: state[“feedback”]})
                  return state

                  Tác nhân này thu thập phản hồi, phân tích và đề xuất thay đổi thói quen tập thể dục hiện tại nếu cần thiết.

                  Bước 5: Tác nhân thúc đẩy
                  Cuối cùng, một huấn luyện viên không có động lực thì sẽ thế nào? Người thúc đẩy động lực sẽ gửi những thông điệp khích lệ để giúp người dùng đi đúng hướng.

                  def motivational_agent(state: State, llm):
                  prompt = ChatPromptTemplate.from_template(
                  “””Provide encouragement, tips, or reminders to the user:

                  User Data: {user_data}
                  Current Plan: {current_plan}
                  Recent Progress: {recent_progress}”””
                  )
                  chain = prompt | llm | StrOutputParser()
                  motivation = chain.invoke(
                  {“user_data”: str(state[“user_data”]), “current_plan”: state[“fitness_plan”], “recent_progress”: state[“progress”][-1] if state[“progress”] else “”}
                  )
                  return state

                  Tác nhân này gửi tin nhắn động viên, đưa ra lời khuyên hữu ích và nhắc nhở người dùng về tiến trình của họ để họ luôn có động lực.

                  Bước 6: Xây dựng giao diện người dùng với Gradio
                  Để giúp huấn luyện viên thể hình AI này dễ tiếp cận hơn, chúng tôi sử dụng Gradio để xây dựng giao diện web trực quan nơi người dùng có thể nhập dữ liệu, lập kế hoạch và đưa ra phản hồi.

                  import gradio as gr

                  # Gradio UI
                  with gr.Blocks() as demo:
                  gr.Markdown(“# AI Fitness Coach”)

                  # Tab for creating the initial fitness plan
                  with gr.Tab(“Create Fitness Plan”):
                  age = gr.Number(label=“Age”)
                  weight = gr.Number(label=“Weight (kg)”)
                  height = gr.Number(label=“Height (cm)”)
                  gender = gr.Radio([“Male”, “Female”, “Other”], label=“Gender”)
                  primary_goal = gr.Dropdown([“Weight loss”, “Muscle gain”, “Endurance improvement”, “General fitness”], label=“Primary Goal”)
                  target_timeframe = gr.Dropdown([“3 months”, “6 months”, “1 year”], label=“Target Timeframe”)

                  workout_preferences = gr.CheckboxGroup([“Cardio”, “Strength training”, “Yoga”, “HIIT”], label=“Workout Preferences”)
                  workout_duration = gr.Slider(15, 120, step=15, label=“Workout Duration (minutes)”)
                  workout_days = gr.CheckboxGroup([“Monday”, “Wednesday”, “Friday”], label=“Workout Days”)
                  activity_level = gr.Radio([“Sedentary”, “Lightly active”, “Moderately active”, “Highly active”], label=“Activity Level”)

                  health_conditions = gr.Textbox(label=“Health Conditions”)
                  dietary_preferences = gr.Textbox(label=“Dietary Preferences (Optional)”)

                  create_button = gr.Button(“Create Fitness Plan”)
                  plan_output = gr.Textbox(label=“Your Fitness Plan”)

                  create_button.click(
                  process_user_input,
                  inputs=[age, weight, height, gender, primary_goal, target_timeframe, workout_preferences,
                  workout_duration, workout_days, activity_level, health_conditions, dietary_preferences],
                  outputs=plan_output
                  )

                  # Tab for updating the fitness plan based on feedback
                  with gr.Tab(“Update Fitness Plan”):
                  feedback = gr.Textbox(label=“Feedback”)
                  update_button = gr.Button(“Update Fitness Plan”)
                  updated_plan_output = gr.Textbox(label=“Updated Fitness Plan”)

                  update_button.click(update_plan, inputs=[feedback], outputs=updated_plan_output)

                  # Launch Gradio demo
                  demo.launch()

                  Giao diện người dùng Gradio cho phép người dùng dễ dàng tương tác với huấn luyện viên AI và quản lý hành trình rèn luyện thể chất của mình.

                  Phần kết luận
                  Chỉ với một vài dòng mã và các công cụ phù hợp, bạn có thể xây dựng huấn luyện viên thể dục hỗ trợ AI của riêng mình. Bằng cách tích hợp các mô hình ngôn ngữ như Ollama với giao diện tương tác bằng Gradio , bạn có thể cá nhân hóa các kế hoạch thể dục và cung cấp phản hồi theo thời gian thực. Cho dù bạn đang muốn giảm cân, tăng cơ hay cải thiện sức bền, huấn luyện viên thể dục AI này sẽ giúp bạn luôn có động lực và đi đúng hướng.

                  https://pub.towardsai.net/how-to-build-your-own-ai-fitness-coach-using-open-source-llms-and-gradio-3151e429692f

                  Lựa chọn ERP nguồn mở php đến python

                  Những tiện ích trên máy nhỏ
                  Nội dung

                    Các công ty khởi nghiệp thường chọn các giải pháp ERP nguồn mở để vận hành doanh nghiệp của họ. Do các nền tảng này nhanh chóng trở nên phổ biến do giá thành thấp hơn và dễ tùy chỉnh. Mặt khác, các công ty lớn hơn xem xét các công ty lớn như SAP, Oracle và Microsoft Dynamics để quản lý các hoạt động kinh doanh của họ theo đó. Nhưng dần dần, bối cảnh đang thay đổi. Các doanh nghiệp lớn cũng chuyển sang các hệ thống ERP nguồn mở để giảm thiểu chi phí phát sinh từ góc độ cấp phép, triển khai và bảo trì. Các chủ doanh nghiệp vừa và nhỏ đã chứng kiến ​​sự gia tăng đáng kể về lợi nhuận sau khi triển khai ERP nguồn mở vào hệ thống của họ. Một hệ thống ERP được tối ưu hóa sẽ thống nhất mọi bộ phận bao gồm nhân viên, quy trình và công nghệ trên toàn tổ chức để cùng nhau đạt được mục tiêu chung.

                    Lập kế hoạch nguồn lực doanh nghiệp nguồn mở mở rộng bằng cách cung cấp giải pháp kinh tế toàn diện cho tất cả mọi người. Vì vậy, loại cơ sở hạ tầng này cho phép các công ty truy cập mã hệ thống ERP và sửa đổi theo nhu cầu của họ. Hơn nữa, nó không yêu cầu giấy phép hoặc chi phí bảo trì phần mềm. Dễ dàng tùy chỉnh và giảm thiểu chi phí kinh doanh của bạn trong thời gian dài. Dễ hiểu và dễ dàng kết hợp với các hoạt động kinh doanh, Bao gồm toàn bộ nội dung; không phụ thuộc vào nhà cung cấp, Dễ dàng đào tạo nhân viên và đóng góp vào việc nâng cao năng lực của họ, Việc nâng cấp hệ thống tương đối đơn giản hơn so với các ERP thương mại khác.

                    Có rất nhiều hệ thống ERP nguồn mở linh hoạt, giàu tính năng và tiết kiệm chi phí trên thị trường. Sau đây chúng tôi đã liệt kê 11 giải pháp ERP nguồn mở hàng đầu dựa trên đánh giá của người dùng và kinh nghiệm cá nhân của chúng tôi.

                    1. Hệ thống ERP WP

                    WP ERP là hệ thống ERP (lập kế hoạch nguồn lực doanh nghiệp) hoàn chỉnh đầu tiên. Nó cho phép bạn vận hành doanh nghiệp ngay từ bảng điều khiển WordPress của mình. Để bạn có thể đồng thời quản lý trang web WordPress và doanh nghiệp của mình từ một nơi, WP ERP tối ưu hóa các doanh nghiệp vừa và nhỏ của bạn bằng các công cụ quản lý nhân sự, CRM và kế toán mạnh mẽ. WP ERP được hơn 10.000 doanh nghiệp tại hơn 160 quốc gia tin dùng với khả năng hỗ trợ hơn 20 ngôn ngữ.

                    Các tính năng chính:

                    • Hỗ trợ 44+ loại tiền tệ
                    • Cung cấp cho bạn toàn quyền kiểm soát mọi hoạt động kinh doanh
                    • Một hệ thống ERP hoàn chỉnh có ba mô-đun cốt lõi: HR, CRM và Kế toán
                    • Quản lý tất cả thông tin công ty từ bảng điều khiển WordPress
                    • Tạo các báo cáo hiệu quả và có được cái nhìn tổng quan nhanh chóng về công ty
                    • Các tiện ích mở rộng mạnh mẽ có sẵn trong các gói cao cấp

                    Điều tuyệt vời nhất là plugin Core và các module HR, CRM và Accounting đều miễn phí sử dụng. Ngoài ra, bạn có thể tùy chỉnh chúng tùy theo doanh nghiệp và nhu cầu của mình. Hơn nữa, bạn có thể mở khóa thêm các tiện ích mở rộng cao cấp và module Project Management khi nhu cầu của doanh nghiệp bạn ngày càng tăng.

                    Tuy nhiên, họ vẫn cung cấp dịch vụ hỗ trợ khách hàng 24/7 cùng với các tài liệu hữu ích và video hướng dẫn.

                    2. Dolibarr

                    Dolibarr ERP là một gói phần mềm nguồn mở dành cho các công ty nhỏ, vừa hoặc lớn, người làm việc tự do hoặc các tổ chức để quản lý doanh nghiệp. Nó bắt đầu hành trình của mình vào năm 2002. Dolibarr được viết bằng PHP và sử dụng cơ sở dữ liệu PostgreSQL, MariaDB và MySQL.

                    Tuy nhiên, giao diện người dùng của hệ thống này có thể không hấp dẫn bạn nhiều trong thời đại hiện đại này. Nhưng bạn thấy các chức năng của nó hữu ích cho doanh nghiệp của mình. Dolibarr hỗ trợ các mô-đun để quản lý CRM, bán hàng, hậu cần, kho, dự án, lập hóa đơn, kế toán, nguồn nhân lực, sản xuất và các chức năng khác.

                    Các tính năng chính:
                    -Giao diện đơn giản và thân thiện với người dùng
                    -Được phát hành theo GPL3
                    -Tính linh hoạt để chỉ kích hoạt những tính năng mà bạn cần
                    -Ứng dụng đa nền tảng (Windows, Mac và Linux) và dựa trên web
                    -Đi kèm với mã có thể tùy chỉnh cao hoặc mã mô-đun
                    Hơn nữa, nó có một cửa hàng ứng dụng. Bạn có thể mua phần mềm từ đó để mở rộng các tiện ích của nó. Bạn cũng có thể kiểm tra mã nguồn của nó trên GitHub.

                    Thêm imap vào php

                    sudo apt-get install php*-imap

                    MariaDB [(none)]> CREATE DATABASE dolibarrdb character set UTF8 collate utf8_bin;

                    MariaDB [(none)]> CREATE USER dolibarr;
                    MariaDB [(none)]> GRANT ALL PRIVILEGES ON dolibarrdb.* TO ‘dolibarr’@‘localhost’ IDENTIFIED BY ‘mypassword’;

                    Vì vậy, tôi cho rằng vì cơ sở dữ liệu và người dùng tồn tại nên tôi có thể bỏ chọn các ô đó.

                    tên cơ sở dữ liệu: dolibarr
                    loại trình điều khiển: mysqli (MySQL hoặc MariaDB >=5.0.3)
                    Máy chủ cơ sở dữ liệu: localhost
                    Cổng: 3306
                    Tiền tố bảng cơ sở dữ liệu: llx_
                    Tạo cơ sở dữ liệu: Không được chọn/Không
                    Đăng nhập: <người dùng>
                    Mật khẩu: <mật khẩu>
                    Tạo tài khoản người dùng hoặc cấp quyền cho tài khoản người dùng trên cơ sở dữ liệu Dolibarr: bỏ chọn/không
                    tùy chọn gốc biến mất (root options disappear).
                    Bây giờ tôi có thể chuyển sang bước tiếp theo.

                    3. ERPNext

                    ERPNext, được hỗ trợ bởi Frappe Technologies, là phần mềm ERP tích hợp mã nguồn mở và miễn phí. Hệ thống này dựa trên hệ thống cơ sở dữ liệu MariaDB. Nó sử dụng JavaScript và các khuôn khổ phía máy chủ dựa trên Python để phát triển.

                    Trở nên phổ biến trong số người dùng nhờ giao diện sạch sẽ và dễ thích ứng. Nó cho phép bạn duy trì hàng tồn kho của mình trên nhiều kho. Bạn có thể dễ dàng xử lý thiết lập sản xuất, quan hệ khách hàng và các hoạt động khác thông qua giải pháp ERP thông minh này.

                    Các tính năng chính:
                    +hệ thống thiết lập dễ dàng theo kiểu wizard
                    +giao diện trực quan—nhanh, linh hoạt và có khả năng mở rộng
                    +quản lý nhiều vai trò người dùng cùng một lúc
                    +thu thập thông tin về doanh nghiệp của bạn bằng cách sử dụng biểu mẫu
                    +có sẵn trong 70 ngôn ngữ khác nhau
                    Hơn nữa, bạn có thể tùy chỉnh hệ thống theo nhu cầu kinh doanh của mình.

                    4. ERP5

                    ERP5 được viết bằng Python và phát hành theo giấy phép GPL 3. Hệ thống mã nguồn mở mạnh mẽ này được giới thiệu lần đầu tiên vào năm 2002. Kể từ đó, nó đã được sử dụng ở mọi nơi trên thế giới, bao gồm các cửa hàng bán lẻ và ngân hàng chính phủ.

                    Nó hỗ trợ một số lượng lớn các mô-đun bao gồm hầu hết các bộ phận của một tổ chức . Chẳng hạn như ngân hàng, kế toán, CRM, HRM, dự án, hàng tồn kho, thương mại điện tử, quản lý dữ liệu sản phẩm, quản lý kiến ​​thức và các bộ phận khác.

                    Các tính năng chính:
                    +Cung cấp công cụ SynchML để đồng bộ hóa dữ liệu
                    +Hỗ trợ nhiều mẫu kinh doanh, hệ thống thu thập và hệ thống xuất bản web
                    +Giải pháp ERP nguồn mở tương thích với thiết bị di động
                    +Được sử dụng bởi các công ty đa quốc gia, lớn hay nhỏ, doanh nghiệp tư nhân hay công cộng
                    Ngoài ra, nó còn cung cấp một số tính năng khác như POS, thương mại, diễn đàn, tư vấn, mã vạch, tiếp thị qua email, lập hóa đơn, quản lý sản xuất, v.v.

                    5. Metasfresh

                    Metafresh là một gói phần mềm mã nguồn mở dựa trên Java. Nó có thể thích ứng với nhu cầu thay đổi của thị trường. Gần đây, nó đã cung cấp các dịch vụ tiên tiến về đảm bảo chất lượng, bảo hành, đào tạo và lập kế hoạch. Họ cam kết giữ cho mã của mình đơn giản và mới mẻ.

                    Là một metal GmbH, nó hoạt động trên các nền tảng Linux, Windows, OS X, Android và iOS. Đây là sản phẩm dựa trên giấy phép GPLv2/GPLv3. Bạn có thể tìm thấy mã nguồn theo giấy phép GPLv2 trên GitHub và phiên bản đám mây được cấp phép theo GPLv3.

                    Các tính năng chính:
                    +hoàn toàn miễn phí cho khách hàng tự lưu trữ
                    +dễ dàng tùy chỉnh theo nhu cầu thay đổi của khách hàng
                    +có sẵn trong các ngôn ngữ Java, JavaScript, XML và SQL
                    +có lợi cho các tổ chức kinh doanh vừa và nhỏ
                    +minh bạch và tạo cơ hội lớn cho sự đổi mới
                    Họ đã phát hành các bản cập nhật hàng tuần kể từ cuối năm 2015. Metasfresh là công ty nắm giữ của ADempiere và được xếp hạng trong số 9 nền tảng ERP nguồn mở hàng đầu bởi opensource.com.

                    6. BlueSeer

                    BlueSeer là phần mềm mạnh mẽ đi kèm với bộ công cụ toàn diện. Nó có thể bao gồm hầu hết các tính năng của các doanh nghiệp vừa và nhỏ. Bạn có thể sử dụng phần mềm ERP nguồn mở này để vận hành các ngành sản xuất , kho bãi và vận tải.

                    Các tính năng chính:
                    +chạy trên các nền tảng như Windows, Mac và Linux
                    +hỗ trợ tiếng Anh để thực hiện
                    +phiên bản nhiều người dùng của BlueSeer cũng có sẵn trên SourceForge
                    +cung cấp chức năng kiểm soát hàng tồn kho, phân phối, bán hàng, quản lý kho và EDI
                    BlueSeer là phần mềm ERP miễn phí đầu tiên, với mục tiêu chính là cung cấp giải pháp thay thế miễn phí cho các công ty.

                    7. MixERP

                    MixERP là một gói hoàn chỉnh tất cả các tính năng nâng cao mà bạn cần để điều hành doanh nghiệp của mình thành công. Giải pháp đa nền tảng này được phát triển bằng ngôn ngữ C#.net. Có tất cả các khả năng để đáp ứng nhu cầu kinh doanh và yêu cầu của kỷ nguyên mới.

                    Các tính năng chính:
                    +Phần mềm ERP mã nguồn mở ASP.net miễn phí
                    +Hỗ trợ các module hữu ích để quản lý hoạt động kinh doanh
                    +Giải pháp dựa trên đám mây cho phép người dùng không phải chịu các chi phí cơ sở hạ tầng khác
                    +Tất cả các thiết bị tương thích như Windows, Mac, hệ thống chạy trên nền tảng Linux, iPhone/iPad, Android và nền tảng di động dựa trên web
                    +Có sẵn bằng tiếng Anh
                    MixERp hướng tới mục tiêu cung cấp các chức năng quản lý doanh nghiệp bao gồm bán buôn, nhân sự, hàng tồn kho, mua sắm, v.v.

                    8. Apache OFBiz

                    Apache OFBiz đi kèm với một cấu trúc cơ bản để các tổ chức có thể tùy chỉnh theo nhu cầu của mình. Khả năng thích ứng làm cho nó phù hợp với các doanh nghiệp có mọi quy mô có thể tích hợp hệ thống vào doanh nghiệp của họ. OFBiz là một hệ thống ERP nguồn mở tiên tiến để thực hiện với các bộ phận khác nhau của một tổ chức.

                    Nó có Giấy phép Apache 2.0 và phiên bản ổn định 16.11.05 sẽ được phát hành vào ngày 2 tháng 10 năm 2018.

                    Các tính năng chính:
                    +Dựa trên Java XML Freemarker Groovy
                    +Hỗ trợ cả hệ điều hành dựa trên ứng dụng web và loại triển khai dựa trên đám mây
                    +Thực hiện liền mạch trên nhiều nền tảng
                    +Cung cấp một mô hình dữ liệu chung với một tập hợp các quy trình kinh doanh
                    +Hỗ trợ một khuôn khổ mạnh mẽ với cách tiếp cận dựa trên dịch vụ quan trọng
                    +Phù hợp với các doanh nghiệp vừa và nhỏ, cơ quan, doanh nghiệp và các đối tượng khác
                    Nó có một số mô-đun, bao gồm kế toán, sản xuất, nhân sự, quản lý hàng tồn kho, CRM, thương mại điện tử, v.v. Các tính năng này tương thích với nhu cầu phát triển của bất kỳ doanh nghiệp nào.

                    9. EasyERP

                    EasyERP là một nền tảng mã nguồn mở với nhiều mô-đun hữu ích để điều hành doanh nghiệp của bạn . Nó bao gồm CRM, HRM, mua hàng, hàng tồn kho, chi phí, báo cáo, quản lý tài khoản, v.v. Giải pháp ERP này cung cấp tất cả các chức năng thiết yếu cần thiết cho CRM.

                    Các tính năng chính:
                    +Được thiết kế đặc biệt cho các doanh nghiệp vừa và nhỏ
                    +Xem tất cả dữ liệu quan trọng trên bảng thông tin
                    +Một nền tảng dễ sử dụng giúp điều hành doanh nghiệp của bạn
                    +Theo dõi và giám sát tất cả các khách hàng tiềm năng và cách họ chuyển đổi thành cơ hội
                    EasyERP là phần mềm thân thiện với người dùng và có thể tùy chỉnh để đáp ứng mọi nhu cầu của bạn liên quan đến hoạt động kinh doanh. Nó đi kèm với giao diện trực quan, nhanh chóng, linh hoạt và có thể mở rộng.

                    10. Odoo

                    Odoo là một công cụ ERP và CRM nguồn mở . Nó chứa một cơ sở hạ tầng kỹ thuật mạnh mẽ có thể hoạt động trơn tru với tất cả các ứng dụng. Đầu tiên, nó được ra mắt vào năm 2005. Mã nguồn được viết bằng Python.

                    Mặc dù hệ thống được cấp phép theo giấy phép GPL 3 nhưng nó cũng cung cấp dịch vụ SaaS (phần mềm dưới dạng dịch vụ) độc quyền cho những người muốn trả tiền trực tiếp để sử dụng dịch vụ một cách dễ dàng.

                    Odoo cung cấp rất nhiều ứng dụng thân thiện với người dùng như CRP, kế toán, hóa đơn, trình xây dựng trang web, thương mại điện tử, tiếp thị qua email, quản lý dự án, hàng tồn kho, v.v.

                    Các tính năng chính:
                    +Cung cấp giao diện người dùng dễ dàng và trực quan
                    +Nhắc đến Google Drive
                    +Cung cấp thiết kế giao diện người dùng trực quan và hiện đại để làm việc
                    +Hỗ trợ các ứng dụng của bên thứ 3; được phát triển bởi các thành viên cộng đồng Odoo
                    +Tương thích với luật GDPR mới
                    Nó hỗ trợ các mô-đun hữu ích bao gồm quản lý dự án, thanh toán, kế toán, quản lý hàng tồn kho, sản xuất và mua hàng. Các mô-đun này có thể giao tiếp với nhau để xử lý tất cả dữ liệu một cách dễ dàng.

                    11. Tryton

                    Tryton là giải pháp ERP độc đáo đi kèm với một số tính năng chuyên biệt để đáp ứng mọi nhu cầu của doanh nghiệp bạn. Giải pháp này phù hợp với mọi loại hình và quy mô công ty. Giải pháp này nổi tiếng với khả năng sử dụng dễ dàng và giao diện thân thiện với người dùng. Họ bắt đầu hành trình của mình để cung cấp “tính mô-đun, khả năng mở rộng và bảo mật” tốt nhất.

                    Các tính năng chính:
                    +Hỗ trợ mô hình 3 tầng: Tryton Database, Tryton Server và Tryton Client
                    +Được viết bằng Python và sử dụng thư viện GTK cho người dùng máy tính để bàn
                    +Cung cấp bản demo miễn phí, hình ảnh docker và tệp nhị phân dựng sẵn
                    +Hoạt động trơn tru trên Windows, Linux và macOS
                    +Có sẵn dưới dạng gói Python có thể được cài đặt bằng pip
                    +Ngoài ra, bạn cũng có thể cài đặt các mô-đun của bên thứ 3 cho hệ thống bằng pip.

                    Tryton cung cấp các mô-đun khác nhau để quản lý CRM, tài chính, kế toán, bán hàng, kho, hàng tồn kho, v.v. Bạn sẽ nhận được các tính năng hữu ích cho chuỗi cung ứng, sản xuất và vận chuyển. Những tính năng hữu ích này làm cho nó phù hợp với các nhà máy và cửa hàng.

                    12. WebERP

                    webERP là một hệ thống ERP mã nguồn mở miễn phí, cung cấp các công cụ quản trị kinh doanh và kế toán thực hành tốt nhất, nhiều người dùng trên web. https://www.weberp.org/ Nó có nhiều tính năng phù hợp với nhiều doanh nghiệp, đặc biệt là các doanh nghiệp phân phối trong bán buôn, phân phối, sản xuất. Nó cũng được sử dụng trong nhiều bệnh viện trên toàn thế giới. Khi kết hợp với hệ thống điểm bán hàng trên máy tính để bàn tương tác của bên thứ 3, nó cũng có thể tạo thành trung tâm của hệ thống quản lý bán lẻ đa chi nhánh phân tán. Một webSHOP tích hợp đầy đủ cũng có sẵn dưới dạng tiện ích bổ sung của bên thứ 3.

                    Hướng dẫn https://www.foodchainea.com/erp2/doc/Manual/ManualContents.php?ViewTopic=Requirements

                    NotrinosERP

                    NotrinosERP là một hệ thống quản lý doanh nghiệp mã nguồn mở, dựa trên web được viết bằng PHP và MySql. NotrinosERP chứa tất cả các mô-đun cần thiết để vận hành bất kỳ doanh nghiệp vừa và nhỏ nào. Nó hỗ trợ nhiều người dùng, nhiều loại tiền tệ, nhiều ngôn ngữ.

                    OpenPro

                    OpenPro cung cấp các giải pháp đóng gói sẵn cho các SMB và các tùy chọn cho các công ty và doanh nghiệp lớn hơn . OpenPro ERP có sẵn dưới dạng triển khai tại chỗ hoặc trên đám mây với giá cả phải chăng.

                    inoERP

                    inoERP là hệ thống quản lý doanh nghiệp mã nguồn mở có giao diện người dùng đơn giản và nhất quán. Các tính năng tương tự như Oracle R12/ Ứng dụng đám mây và SAP ECC/Hana S/4.

                    Demo thử ERP

                    Longtail ERP – All-In-One ERP

                    https://www.weberp.org/demo/

                     

                    ERP nguồn mở dựa trên C#

                    VIENNA Advantage quyết định phát triển ERP và CRM nguồn mở toàn diện nhưng giá cả phải chăng của riêng họ. Vienna Solutions cung cấp các hệ thống đóng gói sẵn theo quy mô công ty và phiên bản ngành, cũng như các giải pháp tại chỗ và đám mây.
                    MixERP là một lựa chọn ERP nguồn mở giá cả phải chăng dành cho các doanh nghiệp vừa và nhỏ, ứng dụng Webforms ASP.net 4.0 được viết bằng C#. Có thể tải xuống miễn phí với tùy chọn mua dịch vụ hỗ trợ. Hiện tại đã ngừng phát triền

                    Chọn giải pháp ERP nguồn mở phù hợp

                    Bây giờ bạn có một số giải pháp ERP nguồn mở tuyệt vời trong tay. Trước tiên, hãy tập trung vào nhu cầu kinh doanh, sở thích của khách hàng, ngân sách và các yếu tố khác, sau đó xem xét các giải pháp khả dụng. Nó dẫn bạn đến việc chọn hệ thống hoàn hảo xứng đáng với thời gian và tiền bạc của bạn.

                    Trong những năm gần đây, mọi người đã chú trọng hơn vào khả năng sử dụng hệ thống và tính dễ sử dụng. Với sự liên tục này, WordPress ERP đã trở nên phổ biến trên toàn thế giới. Vì nó dễ quản lý và vận hành từ bảng điều khiển WordPress . Vì vậy, nhân viên có thể dễ dàng thích nghi với hệ thống. Quan trọng nhất là nó cắt giảm một lượng nhỏ để tích hợp hệ thống vào doanh nghiệp của bạn. Do đó, bạn có thể tập trung dữ liệu kinh doanh của mình bằng công cụ WordPress đa năng – WP ERP .