2023-04-08 08:23:03 +00:00
# PAL (Program-Aided Language Models)
import { Callout, FileTree } from 'nextra-theme-docs'
import {Screenshot} from 'components/screenshot'
import PAL from '../../img/pal.png'
[Gao et al., (2022)](https://arxiv.org/abs/2211.10435) doğal dil problemlerini okumak ve ara akı l yürütme adı mları olarak programlar oluşturmak için LLM'leri kullanan bir yöntem sunar.
Türetilmiş, program destekli dil modelleri (PAL), çözüm elde etmek için serbest biçimli metin kullanmak yerine çözüm adı mı nı Python yorumlayı cı sı gibi programlı bir çalı şma zamanı na aktardı ğı için düşünce zinciri yönlendirmesinden farklı dı r.
<Screenshot src={PAL} alt="PAL" />
2023-08-09 05:54:54 +00:00
Resim Kaynağı : [Gao et al., (2022)](https://arxiv.org/abs/2211.10435)
2023-04-08 08:23:03 +00:00
LangChain ve OpenAI GPT-3 kullanan bir örneğe bakalı m. Sorulan soruyu yorumlayabilen ve Python yorumlayı cı sı ndan yararlanarak yanı t sağlayabilen basit bir uygulama geliştirmekle ilgileniyoruz.
Spesifik olarak, tarihin anlaşı lması nı gerektiren soruları yanı tlamak için LLM kullanı mı na izin veren bir işlev oluşturmakla ilgileniyoruz. LLM'ye [buradan](https://github.com/reasoning-machines/pal/blob/main/pal/prompt/date_understanding_prompt.py) benimsenen birkaç örneği içeren bir bilgi istemi sağlayacağı z.
İhtiyacı mı z olan kütüphaneler:
```python
import openai
from datetime import datetime
from dateutil.relativedelta import relativedelta
import os
from langchain.llms import OpenAI
from dotenv import load_dotenv
```
Önce birkaç şeyi yapı landı ralı m:
```python
load_dotenv()
# API yapı landı rma
openai.api_key = os.getenv("OPENAI_API_KEY")
# LangChain için
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
```
Kurulum modeli örneği:
```python
llm = OpenAI(model_name='text-davinci-003', temperature=0)
```
Kurulum istemi + soru:
```python
question = "Today is 27 February 2023. I was born exactly 25 years ago. What is the date I was born in MM/DD/YYYY?"
DATE_UNDERSTANDING_PROMPT = """
# S: 36 saat sonra 2015 geliyor. AA/GG/YYYY olarak bugünden bir hafta sonraki tarih nedir?
# 2015 yı lı 36 saat sonra geliyorsa, bugün 36 saat öncesidir.
today = datetime(2015, 1, 1) - relativedelta(hours=36)
# Bugünden bir hafta sonra,
one_week_from_today = today + relativedelta(weeks=1)
# %m/%d/%Y ile biçimlendirilen yanı t:
one_week_from_today.strftime('%m/%d/%Y')
# S: 2019'un ilk günü Salı ve bugün 2019'un ilk Pazartesi günü. Bugünün AA/GG/YYYY cinsinden tarihi nedir?
# 2019'un ilk günü Salı günü olup bugün de 2019'un ilk Pazartesi günüyse, bugün 6 gün sonradı r.
today = datetime(2019, 1, 1) + relativedelta(days=6)
# %m/%d/%Y ile biçimlendirilen yanı t:
today.strftime('%m/%d/%Y')
# S: Konserin 01/06/1943 tarihinde yapı lması planlanmı ştı , ancak bir gün ertelenmiştir. AA/GG/YYYY cinsinden 10 gün önceki tarih nedir?
# Konser 01/06/1943 tarihinde planlanmı ş, ancak bugüne bir gün ertelenmişse, bugün bir gün sonradı r.
today = datetime(1943, 6, 1) + relativedelta(days=1)
# 10 gün önce,
ten_days_ago = today - relativedelta(days=10)
# %m/%d/%Y ile biçimlendirilen yanı t:
ten_days_ago.strftime('%m/%d/%Y')
# S: Bugün 19/4/1969. AA/GG/YYYY cinsinden 24 saat sonraki tarih nedir?
# Bugün 19/4/1969.
today = datetime(1969, 4, 19)
# 24 hours later,
later = today + relativedelta(hours=24)
# %m/%d/%Y ile biçimlendirilen yanı t:
today.strftime('%m/%d/%Y')
# S: Jane bugünün 11/3/2002 olduğunu düşündü, ama aslı nda bugün 12 Mart yani 1 gün sonra. AA/GG/YYYY cinsinden 24 saat sonraki tarih nedir?
2023-07-23 05:20:39 +00:00
# Jane bugünün 11/3/2002 olduğunu düşündüyse ama aslı nda bugün 12 Mart ise, o zaman bugün 12/3/2002'dir.
2023-04-08 08:23:03 +00:00
today = datetime(2002, 3, 12)
# 24 saat sonra,
later = today + relativedelta(hours=24)
# %m/%d/%Y ile biçimlendirilen yanı t:
later.strftime('%m/%d/%Y')
# S: Jane, 2001'de Şubat ayı nı n son gününde doğdu. Bugün onun 16.yaş günü. AA/GG/YYYY cinsinden dünkü tarih nedir?
# Jane 2001'de Şubat ayı nı n son gününde doğduysa ve bugün onun 16.yaş günü ise, o zaman bugün 16 yı l sonradı r.
today = datetime(2001, 2, 28) + relativedelta(years=16)
# Dün,
yesterday = today - relativedelta(days=1)
# %m/%d/%Y ile biçimlendirilen yanı t:
yesterday.strftime('%m/%d/%Y')
# S: {question}
""".strip() + '\n'
```
```python
llm_out = llm(DATE_UNDERSTANDING_PROMPT.format(question=question))
print(llm_out)
```
```python
exec(llm_out)
print(born)
```
2023-07-23 05:20:39 +00:00
Aşağı daki çı ktı yı verecektir: `27/02/1998`