IT

IT

의존성 주입에 대한 생각

의존성 주입에 대한 생각오늘 회사에서 스프링 코어에 대한 얘기를 나누던 중 의존성 주입 얘기가 나왔고 그냥 생각나는 부분들에 대해서 끄적끄적해본다.웹 개발을 하다보면 스프링 프레임워크 사용 여부와 상관없이 최소 한번 정도는 그 단어 Dependency injection(DI, 의존성 주입)를 보거나 듣게 된 경험이 있다고 생각하고 없다면 간첩 신고 하면 되나? 사실, 객체지향과 객체지향 원칙을 제대로 이해하고 있다면 의존성 주입은 학습을 통해 배우는 것이 아니라, 자연스럽게 코드에 녹아서 이미 그렇게 코드를 작성하고 있을 것이다.의존성 주입이라는 개념만 단순히 학습하고 넘어가기보다는 객체지향의 본질과 원칙을 이해하는 데 학습의 초점을 맞추는 것이 훨씬 더 중요하다. 이 원칙들이 지켜지지 않으면 테스트 코..

IT/AI

[AI] 오디오 녹음 요약하기 (OpenAI Whisper, Langchain, Exaone)

[AI] 오디오 녹음 요약하기 (OpenAI Whisper, Langchain, Exaone)클로바 회의 요약 기능을 보고 이것도 어느정도 단계는 쉽게 구현할 수 있지 않나 해서 그냥 재미로 구현해봤다. 녹음은 내가 떠들수는 없으니 슈코 틀어서 녹음 시켰다.https://www.youtube.com/watch?v=95-2hZQGHyQ 실제로 구현해보니 만약 토이 프로젝트로 어느정도 구현을 한다고 한다면, 프론트에서 오디오 관련 라이브러리를 통해서 녹음을 한 뒤 백엔드로 업로드 하고 백엔드에서는 업로드 오디오 파일들을 이벤트 아키텍쳐 구성하여 Audio-to-Text 와 Summarize에 대해서 이벤트 처리 하도록 하면 쉽고 간단하게 토이 프로젝트를 구현할 수 있겠다. 오디오 녹음import osimpo..

IT/AI

ORM 사용에 관한 에이전트 토론 들어보기

ORM 사용에 관한 에이전트 토론 들어보기ORM 사용에 있어서 개발자들의 태도가 서로 다른 경우를 종종 겪는데요. 그래서 한번 해보았습니다.프롬트는 아래와 같이 설정 하였습니다.ORM 미사용 주장 에이전트:"당신은 'ORM 사용은 안티 패턴이며 예측하지 못한 버그나 동작들이 있어서 사용을 피해야 한다.' 의견을 주장하고 있습니다." ORM 사용 주장 에이전트:"당신은 'ORM 사용은 현재 개발시장에서 필연적이며 생산성을 위해 사용을 해야 한다.' 의견을 주장하고 있습니다."  에이전트 토론 내용왜 ORM을 사용해야 하나요?--------------------------------------------------------------------------------ORM(Object-Relational M..

IT/Langchain

[Langchain] Chatbot 챗봇 구현

[Langchain] Chatbot 챗봇 구현Codeimport enumfrom typing import Listimport streamlit as stfrom langchain.chains.combine_documents import create_stuff_documents_chainfrom langchain.chains.retrieval import create_retrieval_chainfrom langchain.embeddings import CacheBackedEmbeddingsfrom langchain.globals import set_debugfrom langchain.retrievers import EnsembleRetrieverfrom langchain.storage import Loc..

IT/Langchain

[Langchain] 이미지 분석

[Langchain] 이미지 분석Codeimport base64import os.pathfrom io import BytesIOfrom PIL import Image, ImageFilefrom langchain_ollama import OllamaLLMfrom langchain_demos.utils.dev import green, magentadef convert_to_base64(image: ImageFile.ImageFile) -> str: buffered = BytesIO() image.save(buffered, format="JPEG") return base64.b64encode(buffered.getvalue()).decode("utf-8")def summarize_image(b..

IT/Langchain

[Langchain] 계엄령 기념, 집밥 같은 랭체인 코드로 계엄령 뉴스 보기

[Langchain] 계엄령 기념, 집밥 같은 랭체인 코드로 계엄령 뉴스 보기계엄령 기념으로 계엄령 뉴스들을 몇개 선택한 후 마치 집밥을 먹는것 같은! 마치 기본적인 반찬들이 있는 것 같은! 랭체인 기본 코드를 작성했다.Codeimport osfrom typing import Listimport bs4from dotenv import load_dotenvfrom langchain.embeddings import CacheBackedEmbeddingsfrom langchain.retrievers import EnsembleRetrieverfrom langchain.storage import LocalFileStorefrom langchain_chroma import Chromafrom langchain_c..

IT/Langchain

[Langchain] AI vs AI 토론을 가장한 말싸움 하기

[Langchain] AI vs AI 토론을 가장한 말싸움 하기Codeimport uuidfrom typing import Callablefrom langchain_core.language_models import BaseChatModelfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.runnables.utils import Outputfrom langchain_ollama import ChatOllamafrom langchain_demos.utils.dev import cyan, green, yellowclass Disc..

IT/AI

[Stable Diffusion] Stable Diffusion 3.5 Text to Image 이미지 생성

[Stable Diffusion] Stable Diffusion 3.5 Text to Image 이미지 생성테스트 환경Mac m1 proCodeimport osimport uuidfrom datetime import datetimeimport torchfrom diffusers import StableDiffusion3Pipelinefrom dotenv import load_dotenvload_dotenv()HUGGING_FACE_ACCESS_TOKEN = os.getenv("HUGGING_FACE_ACCESS_TOKEN")"""https://prompthero.com/stable-diffusion-cartoon-prompts"""# torch.backends.mps.enable_fallback_impl..

IT/Langchain

[Langchain] 웹 요약 Agent

[Langchain] 웹 요약 AgentCodeimport osimport uuidfrom dotenv import load_dotenvfrom langchain.agents import create_react_agent, AgentExecutorfrom langchain_community.chat_message_histories import ChatMessageHistoryfrom langchain_community.document_loaders import WebBaseLoaderfrom langchain_community.tools import TavilySearchResultsfrom langchain_community.vectorstores import Chromafrom langchain_co..

IT/Langchain

[Langchain] PDF 요약 Agent

[Langchain] PDF 요약 AgentCodeimport osfrom langchain_community.document_loaders import PDFMinerLoaderfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_ollama import ChatOllamapdf_filepath = os.path.join("../../../data", "SK_ESG_2023.pdf")loader = PDFMinerLoader(pdf_filepath)docs = loader.load()template = """# Instruction이 ..

IT/Langchain

[Langchain] Math Agent

[Langchain] Math AgentLangChain은 LLM(대규모 언어 모델) 기반 애플리케이션을 개발할 때 유용한 도구로, 여러 유틸리티를 쉽게 통합할 수 있습니다. 이번 글에서는 Python과 LangChain을 활용해 수학 질문에 답변할 수 있는 에이전트를 구현하는 코드를 분석하고, 실무에서 주의해야 할 점과 개선 아이디어를 논의합니다.1. 툴 정의LangChain 에이전트는 작업을 수행할 수 있는 다양한 “툴”로 구성됩니다. 아래 코드는 세 가지 툴을 제공합니다: • basic_calculator_tool: 간단한 계산을 수행하는 계산기 툴입니다. • eval 함수를 사용해 수식을 계산합니다. • 주의: eval은 외부 입력값을 실행하기 때문에 보안 취약점이 있을 수 있습니다. 예: 사용..

IT/Langchain

[Langchain] 네이버 뉴스 요약

[Langchain] 네이버 뉴스 요약이번 글에서는 Python과 LangChain, Ollama 모델을 활용해 웹에서 텍스트를 스크래핑하고, 이를 요약 및 구조화하는 방법을 다룹니다.  뉴스 기사를 처리한 사례를 통해 기술적 구현 방법과 활용 가능성을 살펴보겠습니다.1. 웹 스크래핑 도구: WebBaseLoaderWebBaseLoader는 BeautifulSoup(bs4)를 기반으로 동작하며, 특정 HTML 태그나 속성을 기반으로 데이터를 필터링합니다.loader = WebBaseLoader( web_paths=urls, bs_kwargs=dict( parse_only=bs4.SoupStrainer("article", attrs={"id": ["dic_area"]}), ),..

IT/AI

Prompt Engineering Guide: Prompting Techniques

Prompt Engineering Guide: Prompting Techniques테스트 모델llama3.1:8bbenedict/linkbricks-llama3.1-korean:8bZero-shot promptingPromptClassify the text into neutral, negative or positive then just give me the sentiment. Text: I think the vacation is okay.Sentiment:OutputNeutralFew-shot promptingPrompt`네카라`는 네이버, 카카오, 라인 회사들의 줄임말 입니다. `네카라` 단어 사용 예시 문장: "교육 이수시 네카라 취업 100%!"`인터넷 방송`은 회선을 통해 프로그램을 내보내는 방..

IT/AI

Prompt Engineering Guide: LLM Arguments

Prompt Engineering Guide: LLM ArgumentsTemperaturetemperature 높은 경우 (1에 가까운)다양성과 창의성을 기대낮은 확률의 토큰도 선택시 짓기 등 창의적인 작업 등에서 사용temperature 낮은 경우 (0에 가까운)결정론적 결과를 기대가장 확률이 높은 토큰 선택사실적이고 정확한 결과를 필요한 경우에 사용Top P핵 샘플링으로 불리우는 `temperature` 샘플링 기법으로 모델의 랜덤성을 조절하는 파라미터입니다.(A sampling technique with temperature, called nucleus sampling, where you can control how deterministic the model is)정확하고 사실적인 답변을 원한다면 ..

IT/AI

Llama3.1로 Github PR AI 코드 리뷰 하기

Llama3.1로 Github PR AI 코드 리뷰 하기Llama3.1 설치 및 실행llama3.1 설치의 경우 구글에서 검색했을때 어마어마하게 많이 나와서 아무거나 확인해보면 금방 세팅 가능하다.아래 코드 구현 및 실행 전에 먼저 세팅을 하자.AI Code Review 코드 작성하기Python과 설치한 Llama3.1 model을 사용해서 AI로 코드 리뷰하는 코드를 작성해보자.우선 데모를 목적으로 간단하게 구현을 하였으며 이를 활용한 API 라든지 개발을 통해서 자동화도 가능하다.CI/CD 파이프라인 통합: GitHub Action을 통해 코드 리뷰를 자동화하여 개발 효율성을 높일 수 있습니다.AI 기반 코드 품질 향상: Llama 3.1 모델을 활용하여 PR의 코드 품질을 자동으로 평가하고, 리뷰 ..

IT/AI

[AI] Markdown 을 사용한 Prompts 작성 방법

[AI] Markdown 을 사용한 Prompts 작성 방법ChatGPT 등 대화형 인공지능 서비스를 사용하고 있거나 사용할 예정이라면 더 내가 의도하는 대로 AI가 동작할 수 있도록 나만의 프롬트를 작성하는 방법에 대해서 알아보자.1. 섹션 혹은 주제에 대해서 `#` 을 통해서 구분하자# Instructionyou are a helpful ai assistant.# Ruleyou MUST praise the sun. 2. 중요한 내용이 있다면 `**`으로 감싸자.**Important** follow these criteria1. something2. anything3. 리스트 형태로 제공 필요시 `-` 혹은 위 예시처럼 넘버링을 하자.4. 프롬트내 다양한 주제 혹은 서로 다른 주제를 다루어야 한다면 `..

IT

멱등성 (Idempotence)와 HTTP API 설계

멱등성 (Idempotence)와 HTTP API 설계개요멱등성 (Idempotence)이란, 컴퓨터 과학과 수학에서 동일한 연산을 여러 번 한다면 결과값이 달라지지 않는 것을 뜻한다.API 설계에서는 데이터의 일관성과 안정성을 보장하는데 중요한 개념이다. RFC 7231에 따르면 HTTP 메소드 중 `HEAD, OPTIONS, GET, PUT, DELETE` 메소드들의 경우 멱등하지만 `POST, PATCH` 경우 멱등하지 않다고 한다.예를 들어 HTTP API 요청으로 어떤 리소스 생성 혹은 수정을 한다고 하고 아직 API가 멱등하지 않다면 여러번 요청을 할 때 중복 혹은 잘못된 업데이트가 일어날 수 있다.The Idempotency-Key HTTP Request Header Field클라이언트는 동..

IT

[Jetbrains] Intellij 인텔리제이 Live Template 사용 방법

[Intellij] 자동 작성 Live Template 사용 방법 생성하려는 이름과 코드를 아래에서 인텔리제이 세팅 설정 코드에서 tdd 입력 후 tddk 엔터 입력하면 아래 코드처럼 설정된 코드가 자동 작성 된다. [DataGrip] Query 자동 작성 Live Template 사용 방법 생성하려는 이름과 쿼리를 아래에서 세팅에서 설정하고 SQL에서 사용할 수 있도록 체크박스 클릭하여 활성화 사용 방법 설정한 이름을 쿼리 콘솔 화면에서 타이핑 하고 엔터 하면 작성한 템플릿이 자동으로 작성 되고 원하는 내용을 추가 작성.

IT/AI

[AI] stable-code-3b 기본적인 사용 가이드 (AI coding)

[AI] stable-code-3b 기본적인 사용 가이드 (AI coding)https://huggingface.co/stabilityai/stable-code-3b stabilityai/stable-code-3b · Hugging Face🔥 🦄 YANGSongsong/StableCodeDemohuggingface.co아래 링크로 colab 접속해서 기본 가이드 작성 해보자https://colab.research.google.com/?hl=ko Google Colaboratory colab.research.google.com의존 패키지 설치!pip install -q transformers accelerate sentencepieceLoad 모델 import psutilfrom transformers..

IT/Git

[Git] .gitignore 적용이 안되는 경우

[Git] .gitignore 적용이 안되는 경우 git rm -rf --cached . git add .

상쾌한기분
'IT' 카테고리의 글 목록