Summary

  • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ”„๋กฌํ”„ํŠธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  • ๋‚ด ํ”„๋กฌํ”„ํŠธ hub์— ์˜ฌ๋ฆฌ๊ธฐ

Langchain Hub๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ๋ฐ˜์˜ ๋ฆฌ์†Œ์Šค ์ €์žฅ์†Œ๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ž‘์„ฑํ•œ ํ”„๋กฌํ”„ํŠธ๋“ค์„ ํƒ์ƒ‰ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

1๏ธโƒฃ ํ”„๋กฌํ”„ํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ(pull)

from langchain import hub 
 
prompt = hub.pull("rlm/rag-prompt")
print(prompt)
# Output
input_variables=['context', 'question'] metadata={'lc_hub_owner': 'rlm', 'lc_hub_repo': 'rag-prompt', 'lc_hub_commit_hash': '50442af133e61576e74536c6556cefe1fac147cad032f4377b60c436e6cdcb6e'} messages=[HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=['context', 'question'], template="You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you don't know the answer, just say that you don't know. Use three sentences maximum and keep the answer concise.\nQuestion: {question} \nContext: {context} \nAnswer:"))]

2๏ธโƒฃ ํ”„๋กฌํ”„ํŠธ ์˜ฌ๋ฆฌ๊ธฐ(push)

ํ”„๋กฌํ”„ํŠธ๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” hub ๊ณ„์ •์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์ฒซ ์‹œ์ž‘์œผ๋กœ Langchain HubํŽ˜์ด์ง€์—์„œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

[+Prompt] - [Save as] - [Public]์„ ๋ˆ„๋ฅด๋ฉด ์ด๋ฆ„์„ ์„ค์ •ํ•˜๋Š” ํ™”๋ฉด์ด ์ƒ๊ธด๋‹ค.

ํ”„๋กฌํ”„ํŠธ ์‚ญ์ œ, ์ด๋ฆ„ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ์ด ์—†๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ”„๋กฌํ”„ํŠธ๋ช…์„ ์‚ฌ์šฉํ•˜์ž.

๋‚˜๋Š” ํ”„๋กฌํ”„ํŠธ๋ช…์„ test, test-test๋กœ ํ•ด์„œ ์•„์‰ฝ๊ฒŒ ๊ธฐ๋ก์ด ๋‚จ์•„๋ฒ„๋ ธ๋‹ค.

๋‚˜์™€ ๊ฐ™์€ ๊ณ ๋ฏผ์„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ISSUE๋ฅผ ์˜ฌ๋ ธ๋Š”๋ฐ, ์•ž์œผ๋กœ ๋…ผ์˜ํ•  ์˜ˆ์ •์ด๋ผ๊ณ  ํ•œ๋‹ค.

์•„๋ฌดํŠผ hub ๊ณ„์ •๋ช…์ด ์ƒ๊ฒผ์œผ๋ฉด ์ด์ œ ๋กœ์ปฌ์—์„œ๋„ ๋ฐ”๋กœ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

from langchain.prompts import ChatPromptTemplate
from langchain import hub
 
template = """
KEY๋ฅผ ๊ฐ€์ง„ JSON ํ˜•์‹์œผ๋กœ ๋‹ต๋ณ€ํ•ด์ฃผ์„ธ์š”.
 
KEY:
- text<์ž…๋ ฅ๋ฐ›์€ TEXT>
- summary<TEXT๋ฅผ ํ•œ ์ค„๋กœ ์š”์•ฝํ•ด์ฃผ์„ธ์š”>
- translation<summary๋ฅผ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•ด์ฃผ์„ธ์š”>
 
TEXT: {text}
"""
 
prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "๋‹น์‹ ์€ ๊ธฐ์‚ฌ๋ฅผ ์š”์•ฝํ•˜์—ฌ ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•œ ํ›„ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค."),
        ("human", template)
    ]
)
hub.push("thinker/summary_json_korean", prompt)

๋งŒ์•ฝ ํ”„๋กฌํ”„ํŠธ๋ช…์ด ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด ๋ฎ์–ด์”Œ์›Œ์ง„๋‹ค. Git์˜ Commit๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ์œผ๋กœ, ์˜ˆ์ „ ๋ฒ„์ „์˜ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๊ณ  ์‹ถ๋‹ค๋ฉด commit hash๋ฅผ ํ•จ๊ป˜ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

prompt = hub.pull("thinker/summary_json_korean:9e3d6447")

3๏ธโƒฃ ํ”„๋กฌํ”„ํŠธ ๊ด€๋ฆฌํ•˜๊ธฐ

๋นจ๊ฐ„์ƒ‰ ๋ฐ•์Šค ๋ถ€๋ถ„์„ ๋ˆ„๋ฅด๋ฉด README, Description, USE CASES, Language, Model ๋“ฑ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž‘์„ฑ์„ ์ƒ์„ธํ•˜๊ฒŒ ํ•  ์ˆ˜๋ก Langchain Hub์—์„œ ๋” ํ™œ๋ฐœํžˆ ๊ณต์œ ๋  ์ˆ˜ ์žˆ๋‹ค.


References