
// : 한 줄 주석
/* 여러줄 주석 */
/** 함수 주석
*
*
*/
var i = 10000;
for (var i = 0; i < 10; i++) {
// 반복 로직
console.log("for문에 정의된 i :", i);
}
console.log(i); // 10








// + 숫자
10 + 10 = 20
// + 문자열
a + b == ab
a + 1 == a1 // 문자열




# lib.py
import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
load_dotenv()
config = {
"model_provider" : os.getenv("MODEL_PROVIDER"),
"model" : os.getenv("MODEL_NAME")
}
api_key = os.getenv("OPENAI_API_KEY")
if api_key:
config['api_key'] = api_key
def get_model(temperature = 0):
config['temperature'] = temperature
return init_chat_model(**config)
# model 불러오기
from lib import get_model, config
model = get_model()
print(config)
from langchain_core.messages import HumanMessage
model.invoke([HumanMessage("안녕")])
동기식
비동기식
RunnableLambda => Runnable 객체로 래핑
# RunnableLambda
from langchain_core.runnables import RunnableLambda, chain
@chain
def func_a(message: str) -> str:
return f"func_a:{message}"
def func_b(message: str) -> str:
return f"func_b:{message}"
# func_a_runnable = RunnableLambda(func_a)
# func_b_runnable = RunnableLambda(func_b)
chain = func_a | func_b
chain.invoke('안녕하세요!')
# 'func_b:func_a:안녕하세요!'
import re
from langchain_core.messages import HumanMessage
from langchain_core.runnables import chain
from langchain_core.output_parsers import StrOutputParser
from lib import get_model
@chain
def protected_message(message : str) -> list[HumanMessage] :
pattern = re.compile(r"(010)\D*(\d{4})\D*(\d{4})")
message = pattern.sub(r"\g<1>-****-****", message)
return [HumanMessage(message)]
model = get_model()
parser = StrOutputParser()
chain = protected_message | model | parser
chain.invoke("나의 전화번호는 010-1000-1000이다.")
# '입력하신 전화번호 형식은 "010-****-****"로, 대한민국의 일반 휴대폰 번호 형식과 일치합니다. \n하지만 실제 개인정보 보호를 위해 숫자를 \'*\'로 가린 형태입니다.\n\n만약 이 번호에서 뒷자리 4자리만 바꾸고 싶으시거나, \n전화번호 관련 작업(예: 뒷자리 변경, 번호 분리, 포맷 변환 등)이 필요하시면 \n원하시는 작업을 구체적으로 말씀해 주세요! \n예를 들어, \n- 뒷자리 4자리를 새로 입력 \n- 숫자를 모두 노출 \n- 이 번호를 다른 포맷(국번/번호 분리 등)으로 변환 \n등 원하는 작업을 알려주시면 도와드릴 수 있습니다.'
for chunk in chain.stream('나의 전화번호는 010-1000-1000이다. 당신의 번호는?'):
print(chunk, end="")
# 죄송합니다. 저는 실제로 전화번호를 저장하거나 받을 수 없습니다.
# 만약 전화번호를 안전하게 보관하거나 복구를 위해 메모해 두신 거라면, 믿을 수 있는 저장소에 기록해 두시는 것이 좋습니다.
# 혹시 전화번호 관리 방법, 분실 시 대처법, 또는 다른 IT 관련 도움이 필요하시면 언제든 말씀해 주세요!
messages = [
"나의 전화본호는 010-1000-1000입니다. 당신의 번호는?",
"안녕하세요!",
"반갑습니다."
]
for i, res in enumerate(chain.batch(messages)):
print(i, res)
# 0 죄송합니다. 해당 문장은 일반적으로 상대방의 전화번호를 재차 확인하거나 농담으로 주고받는 상황에서 사용됩니다. 만약 상대방의 전화번호를 묻는 의도라면, 서로의 번호를 직접 말하거나 확인해야 합니다.
# 예시:
# - "나의 전화번호는 010-****-****입니다. 당신의 번호는 무엇인가요?"
# - 또는 농담이나 장난스럽게 "당신의 번호는 010-1234-5678인가요?"처럼 말할 수도 있습니다.
# 상황에 따라 답변을 조정해 주세요!
# 1 안녕하세요! 😊
# 오늘도 좋은 하루 보내세요.
# 무엇을 도와드릴까요?
# 2 반갑습니다! 무엇을 도와드릴까요? 😊
async def async_messages():
async for chunk in chain.astream("나의 전화번호는 010-1000-1000입니다. 당신의 번호는?"):
print(chunk, end="")
await async_messages()
# 죄송합니다. 저는 실제로 전화번호를 저장하거나 받을 수 없습니다.
# 만약 전화번호를 안전하게 보관하거나 복구를 위해 메모해 두신 거라면, 다른 안전한 곳에 기록해 두시는 것을 추천드립니다.
# 혹시 전화번호 관리 방법, 분실 시 대처법, 또는 다른 IT 관련 도움이 필요하시면 언제든 말씀해 주세요!