# 07. HuggingFace Local

```python
# Perpustakaan untuk memuat informasi token
# Instal: pip install python-dotenv
from dotenv import load_dotenv

# Memuat informasi token
load_dotenv()
```

```python
# Mengatur pelacakan LangSmith. https://smith.langchain.com
# !pip install langchain-teddynote
from langchain_teddynote import logging

# Masukkan nama untuk proyek Anda.
logging.langsmith("CH04-Models")
```

Atur path untuk mengunduh model

```python
# jalur untuk mengunduh model huggingFace

import os

# setel untuk mengunduh ke jalur ./cache/
os.environ["TRANSFORMERS_CACHE"] = "./cache/"
os.environ["HF_HOME"] = "./cache/"
```

Tetapkan `repo ID` (ID repositori) dari model HuggingFace ke variabel `repo_id`.

`microsoft/Phi-3-mini-4k-instruct` Model: [https://huggingface.co/microsoft/Phi-3-mini-4k-instruct](https://huggingface.co/microsoft/Phi-3-mini-4k-instruct)

```python
from langchain_huggingface import HuggingFacePipeline

llm = HuggingFacePipeline.from_model_id(
    model_id="microsoft/Phi-3-mini-4k-instruct",
    task="text-generation",
    pipeline_kwargs={
        "max_new_tokens": 256,
        "top_k": 50,
        "temperature": 0.1,
    },
)
llm.invoke("Hugging Face is")
```

```python
from langchain_core.prompts import PromptTemplate

template = """Meringkas TEKS dalam poin-poin sederhana yang diurutkan dari yang paling penting hingga yang paling tidak penting.
TEXT:
{teks}

Poin-Poin Penting: """

# Membuat template prompt
prompt = PromptTemplate.from_template(template)

# membuat chain
chain = prompt | llm

text = """Model Bahasa Besar (Large Language Model atau LLM) seperti saya, ChatGPT, adalah jenis model kecerdasan buatan (AI) yang dirancang untuk memahami, menghasilkan, dan berinteraksi dengan bahasa manusia. Model-model ini disebut "besar" karena dibangun dari sejumlah besar data teks dan memiliki miliaran atau bahkan triliunan parameter. Parameter adalah aspek-aspek dari model yang dipelajari dari data pelatihan; parameter ini pada dasarnya adalah pengaturan internal yang menentukan bagaimana model menafsirkan dan menghasilkan bahasa. LLM bekerja dengan memprediksi kata berikutnya dalam sebuah rangkaian berdasarkan kata-kata yang mendahuluinya, yang memungkinkan model ini menghasilkan teks yang koheren dan relevan secara kontekstual berdasarkan prompt yang diberikan. Kemampuan ini dapat diterapkan dalam berbagai cara, mulai dari menjawab pertanyaan dan menyusun email hingga menulis esai dan bahkan menciptakan kode komputer. Proses pelatihan untuk model-model ini melibatkan paparan terhadap berbagai sumber teks yang beragam, seperti buku, artikel, dan situs web, yang memungkinkan mereka untuk mempelajari pola bahasa, tata bahasa, fakta tentang dunia, dan bahkan gaya penulisan. Namun, penting untuk dicatat bahwa meskipun LLM dapat memberikan informasi yang tampak berpengetahuan, tanggapan mereka dihasilkan berdasarkan pola dalam data yang mereka dilatih, dan bukan dari pemahaman atau kesadaran yang sebenarnya. Pengembangan dan penerapan LLM memunculkan pertimbangan penting mengenai akurasi, bias, penggunaan etis, dan potensi dampaknya terhadap berbagai aspek masyarakat, termasuk pekerjaan, privasi, dan misinformasi. Peneliti dan pengembang terus bekerja untuk mengatasi tantangan ini sambil meningkatkan kemampuan dan aplikasi model-model ini."""
print(f "teks:\n\n{teks}")
```

```python
# jalankan chain
response = chain.invoke({"text": text})

# mencetak hasil
print(response)
```
