전체 글 574

코루틴과 비동기 프로그래밍의 관계

재미없는 대학 숙제같은 제목이지만, 최근에 책을 하나 읽으면서 Kotlin의 코루틴(Coroutine)을 사용하면서 풀리지 않던 찝찝함을 풀어서 코루틴과 비동기 프로그래밍의 관계에 대해 포스팅 해보려한다. 이 글은 코루틴, 루틴, 서브루틴, 비동기 프로그래밍, 스레드같은 관련 단어가 각각 따로 뭔지는 알겠는데 이것들의 관계에 대해 명확히 설명하지 못하는 사람이라면 도움이 될 것이다.어떤 개념에 대해 이해하기 위해서는 그 개념이 왜 등장했는지, 이것이 해결하고자하는 문제점은 무엇인지에 대해 생각해보는게 좋은 접근이라는 것을 꽤 오래 잊고있었다. 그냥 "코루틴"이라고 구글에 검색해서 아티클을 몇가지 보면서 이해했다고 넘겼다. 하지만 정작 "코루틴"이 무엇인가? 그리고 비동기 프로그래밍과는 어떤 관계가 있는가..

템플 스테이를 다녀와서

난생처음 템플 스테이를 다녀왔다. 요즘따라 괴로운 마음이 들어서 스마트폰을 보면서 생각하는걸 멈추고 수많은 정보를 뇌에 욱여넣는 행동을 한다는걸 깨달아서였다. 내가 괴로운 것은 심각한건 아니고, 보통 사람들이 느끼는 일상적인 괴로움 정도기는 하다. 불안과 질투, 후회 같은 감정들인데 이러한 생각들이 아무런 도움도, 피해도 되지 않는다는 걸 알기에 멈추고 싶었다. 괴로움에 대한 원인과 출처에 대한 정의는 끝났지만 해결방법을 찾지 못했고, 템플 스테이가 해답이 되지않을까? 생각했다. 안전한 곳에서 스마트폰을 끄고 하루를 생활하는 것도 궁금했고! 템플 스테이에 온 사람들은 그다지 다양하지 않았다. (ㅋㅋㅋㅋ)9명중에 8명은 내 또래로 보이는 여자고, 1명은 여자친구가 오자고해서 따라 온 것으로보이는 남자였..

Agent를 고도화하면서 겪은 문제점들

Tool이 늘어날 수록 멍청해지고, Input Token도 빠르게 소모했음다소 무의미해보이는 도구 호출 증가Tool 설명을 위한 Input Token의 증가Tool을 줄이기 위한 노력CAG 활용 → 관련되지 않은 질문에도 들어갔기 때문에 Input Token이 심하게 소모되어 비슷하고 항상 같이 사용되는 Tool을 하나로 합치는 방향으로 다시 작업계속 같은 패턴으로 사용하는 도구를 하나로 합침 → 회사 정보조회 도구Slack 채널을 조회하는 도구Slack UserGroup을 조회하는 도구Slack UserGroup 소속 멤버를 조회하는 도구Tool 설명을 간결하고 명확한 방향으로 수정거대해진 프롬프트, 이를 무시하는 LLMClaude는 주어진 문제에 적절한 도구를 잘 사용하지만, 친근하게 대하라는 Sys..

LangGraph Agent에 장기기억(LTM)추가하기

LangGraph로 만든 Agent에 장기 기억을 추가하기 위해서는 기존 그래프에 새로운 노드와 도구를 추가해야한다.노드대화 전 저장된 기억을 불러오는 노드 (load_memories)도구관련 기억을 검색해서 가져오는 도구 (SearchRecallMemoriesTool)기억하는 도구 (SaveMemoriesTool)load_memories 노드가 하는 일?load_memories 노드부터 살펴보겠다. load_memories는 Agent가 작업을 처리하기 시작할때 이전 대화 내용을 기반으로 관련된 기억을 불러오는 노드다. 불러온 기억은 State에 [”recall_memories”]로 저장되고, 이는 나중에 기억과 관련된 SystemPrompt에 Context로서 제공된다.load_memories를 어떻..

Pydantic Serialize시 오류 : Object of type <Enum> is not JSON serializable 해결방법

공식문서 참조: https://docs.pydantic.dev/latest/api/config/#pydantic.config.ConfigDict.use_enum_valuesEnum을 Enum 값으로 사용할지 여부를 정의할 수 있는 use_enum_values라는 Model Configuration을 True로 설정할 경우에 Serialize 가능해진다.class SomeEnum(Enum): FOO = 'foo' BAR = 'bar' BAZ = 'baz'class SomeModelCls(BaseModel): e: SomeEnumm = SomeModelCls(e=SomeEnum.FOO)m.model_dump() # TypeError: Object of type SomeEnum is no..

반쪽짜리 Contextual Retrieval로 RAG 강화 해보기

2024년 9월 20일, Anthropic은 Contextual Retrieval이라는 개념을 제시했다. Contextual Retrieval은 기존의 RAG의 검색 성공률을 향상시키기 위한 방법으로, Contextual Embeddings와 Contextual BM25의 두가지 하위 기술을 사용한다. Anthropic에 따르면 이 방법을 이용할 경우 실패한 검색 수를 49%까지 줄일 수 있으며, ReRanking과 함께 사용하면 67%까지 줄일 수 있다고한다. 최근에는 RAG에 이어 CAG(Cache-Augmented Generation)도 등장했다. CAG는 더 길어진 LLM의 Context Window를 충분히 활용하여, 검색 증강하려는 문서의 전체 내용이 Context Window에 들어갈 수 있..

[내방] 아지트 - 한식백반

내방역에서 조금만 올라가면 나오는 보드게임 카페같은 간판을 가진 곳인데, 겉보기에는 평범해보이지만 비범한 요리가 나온다! 고등어 구이, 차돌 청국장, 보쌈, 닭도리탕 같은 메뉴들을 팔고있고, 저녁에는 더 다양하다. 맛있는 간장게장을 먹어본적이 없었는데 여기서 처음 먹어봤다. 시키는 것마다 왠만한 집보다 맛있어서 메뉴를 하나씩 시켜보는 재미가있었다. 그냥 주방장 선생님 능력치가 다른듯...미안하지만 엄마밥이 그리워지지않는 맛이었다. 엄마도 인정할것이다. 내방역 주변에 맛집이랄게 그닥 없는데 여긴 맛있다.

화등초상

이라는 드라마를 요즘 재미있게 보고있다.80년대의 대만을 배경으로 하고있는데 배우들의 연기도 훌륭하고, 대사도 하나하나 생각할 거리를 던져준다.빠르게 지나가는 대사들 중에서 곱씹고 싶은 것들을 몇 가지 주웠다. 사실 드라마를 보면 많은 대사를 이해못해서...대사에 있는 내용과 내가 든 생각이 영 딴판일수도 있겠지만! ㅋㅋㅋ이 생각을 잊고싶지 않아서 적어둔다.# 차오 바에 앉아있는 유리에게 헨리가 다가가며유리: 난 혼자이기를 원해.사랑 같은 건 원하지 않아. 어떤 것 같아?다들 좋은 상대를 찾으려고 해.여자는 꼭 결혼해서 아이를 낳아야 한다고 생각해.안 그러면 잘못된 거라고 하지.헨리: 거짓말!유리: 무슨 뜻이야?헨리: 이 사람들을 봐 (차오의 손님들) 다들 외로워서 여기 오는 거잖아?넌 사랑을 원치 않는..