> For the complete documentation index, see [llms.txt](https://altero.gitbook.io/langchain-book-by-altero/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://altero.gitbook.io/langchain-book-by-altero/ch04-model/02.-cache.md).

# 02. Cache

## Caching

LangChain menyediakan lapisan caching opsional untuk LLM.

Ini berguna untuk dua alasan

* Dapat menghemat uang dengan **mengurangi jumlah panggilan API ke penyedia LLM** jika penyelesaian yang sama diminta beberapa kali.
* Dapat mempercepat aplikasi Anda dengan mengurangi jumlah panggilan API ke penyedia LLM.

```python
# File konfigurasi untuk mengelola API KEY sebagai environment variable
# pip install python_dotenv
from dotenv import load_dotenv

# API KEY 정보로드
load_dotenv()
```

```python
# Mengatur pelacakan LangSmith. https://smith.langchain.com
# !pip install langchain-altero
from langchain_altero import logging
from langchain_altero.messages import stream_response

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

Membuat model dan prompt

```python
from langchain_openai import ChatOpenAI
from langchain_core.prompts import PromptTemplate

# Membuat sebuah model.
llm = ChatOpenAI(nama_model = "gpt-3.5-turbo")

# Membuat prompt.
prompt = PromptTemplate.from_template("Berikan saya ringkasan {negara} dalam 200 karakter atau lebih")

# Buat sebuah chain.
chain = prompt | llm
```

```python
%%time
response = chain.invoke({"negara": "Indonesia"})
print(response.content)
```

{% code overflow="wrap" %}

```
Indonesia adalah negara kepulauan terbesar di dunia dengan keberagaman budaya, suku, dan agama. Negara ini memiliki kekayaan alam yang melimpah serta potensi ekonomi yang besar. Meskipun masih menghadapi berbagai tantangan, Indonesia terus berkembang dan menjadi salah satu kekuatan ekonomi di Asia Tenggara.
```

{% endcode %}

## InMemoryCache

Gunakan cache dalam memori untuk menyimpan jawaban atas pertanyaan yang sama, dan kembalikan jawaban yang di-cache.

```python
%%time
from langchain.globals import set_llm_cache
from langchain.cache import InMemoryCache

# Gunakan cache dalam InMemory
set_llm_cache(InMemoryCache())

# Memanggil rantai.
response = chain.invoke({"negara": "Indonesia"})
print(response.content)
```

{% code overflow="wrap" %}

```
Indonesia adalah negara kepulauan terbesar di dunia dengan keberagaman budaya, suku, dan agama. Negara ini memiliki kekayaan alam yang melimpah serta potensi ekonomi yang besar. Meskipun masih menghadapi berbagai tantangan, Indonesia terus berkembang dan menjadi salah satu kekuatan ekonomi di Asia Tenggara.
```

{% endcode %}

```python
%%time
# Memanggil chain.
response = chain.invoke({"negara": "Indonesia"})
print(response.content)
```

{% code overflow="wrap" %}

```
Indonesia adalah negara kepulauan terbesar di dunia dengan keberagaman budaya, suku, dan agama. Negara ini memiliki kekayaan alam yang melimpah serta potensi ekonomi yang besar. Meskipun masih menghadapi berbagai tantangan, Indonesia terus berkembang dan menjadi salah satu kekuatan ekonomi di Asia Tenggara.
```

{% endcode %}

## SQLite Cache

```python
from langchain_community.cache import SQLiteCache
from langchain_core.globals import set_llm_cache
import os

# Membuat direktori cache.
if not os.path.exists("cache"):
    os.makedirs("cache")

# Gunakan SQLiteCache.
set_llm_cache(SQLiteCache(database_path="cache/llm_cache.db"))
```

```python
%%time
# Memanggil chain.
response = chain.invoke({"negara": "Indonesia"})
print(response.content)
```

```
Indonesia adalah negara kepulauan terbesar di dunia dengan keberagaman budaya, suku, dan agama. Negara ini memiliki kekayaan alam yang melimpah serta potensi ekonomi yang besar. Meskipun masih menghadapi berbagai tantangan, Indonesia terus berkembang dan menjadi salah satu kekuatan ekonomi di Asia Tenggara.
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://altero.gitbook.io/langchain-book-by-altero/ch04-model/02.-cache.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
