An opinionated guide to today’s technology landscape
테크놀로지 레이더는 전 세계 Thoughtworkers의 실질적인 경험에 기반하여 도구, 기술, 플랫폼, 언어, 그리고 프레임워크에 대한 현황을 담고 있습니다. 연간 두 번 발표되며, 현재 세계가 소프트웨어를 어떻게 제작하는지에 대한 인사이트를 제공합니다. 당신이 중요하게 생각하는 부분을 파악하고 평가하기 위해 이를 활용하세요.
AI를 활용한 소프트웨어 개발
이번 레이더 편에서 AI 관련 주제가 우리의 대화를 주도한 것에 아무도 놀라지 않을 것입니다. 우리는 처음으로 다양한 카테고리와 능력을 구분하기 위한 시각적 가이드를 필요로 했습니다(자바스크립트 생태계의 혼돈이 심할 때조차 이런 필요성을 느끼지 않았습니다). CI와 CD와 같은 선구적인 엔지니어링 방법론을 도입한 소프트웨어 컨설팅 기업으로서, AI를 통한 소프트웨어 개발 지원이 우리에게 특히 관심사입니다. 레이더에서는 GitHub Copilot, Tabnine, Codeium과 같은 코딩 지원 도구들을 다루었습니다. 코딩을 위한 오픈소스 LLM의 출현이 도구 생태계에 어떤 변화를 가져올지 기대되며, 사용자 스토리 작성, 사용자 연구, 엘리베이터 피치 등 코딩 이외의 부분에서도 도움을 주는 도구와 기능의 급증에 큰 기대를 갖고 있습니다. 동시에, 개발자들이 이러한 도구들을 책임있게 사용하며, 허구의 의존성 같은 보안 및 품질 문제를 인식하는 것이 중요하다고 생각합니다.
GitHub Copilot는 소프트웨어 개발 중 코딩 지원을 위한 귀중한 도구입니다. 내부적으로, LLM들은 인라인 코드 지원, 코드 세밀 조정, IDE에서의 대화형 지원 등을 통해 개발자의 경험을 원활하게 지원할 수 있습니다. 이러한 모델 대부분은 독점적이며 구독 서비스를 통해서만 사용할 수 있습니다. 좋은 소식은 코딩을 위한 여러 오픈소스 LLM을 사용할 수 있다는 것입니다. 자체 코딩 지원 서비스를 구축해야 하는 상황이라면 (예를 들어 규제가 많은 산업) StarCoder와 WizardCoder와 같은 모델을 살펴보세요. StarCoder는 BigCode가 관리하는 대량의 데이터 세트로 훈련되었고, WizardCoder는 Evol-Instruct 튜닝된 StarCoder 모델입니다.
우리는 실험에서 StarCoder를 사용해보았고, 코드, YAML, SQL, JSON과 같은 구조화된 소프트웨어 엔지니어링 요소 생성에 유용하다고 판단했습니다. 실험을 기반으로, 우리는 두 모델 모두 프롬프트 내의 소량의 예제를 사용한 맥락 내 학습에 민감하게 반응한다는 것을 발견했습니다. 그렇지만 특정한 하위 작업들(예를 들면, Postgres와 같은 특정 데이터베이스를 위한 SQL 생성)에 대해서는 모델의 세부 조정이 필요했습니다. 최근에는 Meta가 Llama 2의 코드 전문 버전인 Code Llama를 발표했습니다. 이러한 오픈소스 모델을 사용할 때는 주의해야 합니다. 그들의 라이센스, 코드의 라이센스, 그리고 모델을 훈련시키기 위해 사용된 데이터 세트의 라이센스를 고려하세요. 이러한 코딩 LLM 중 어떤 것을 조직에 선택하기 전에 이러한 측면들을 주의 깊게 평가하십시오.
A large number of LLMs
대규모 언어 모델(LLMs)은 현대 AI에서 많은 혁신적인 발전의 기반이 됩니다. 현재 많은 실험은 ChatGPT나 Bard와 같은 채팅 형식의 사용자 인터페이스를 프롬프트로 사용하는 것에 관련되어 있습니다. 기본적으로, 주요 경쟁 생태계(OpenAI의 ChatGPT, Google의 Bard, Meta의 LLaMA, Amazon의 Bedrock 등)는 우리의 토론에서 크게 주목되었습니다. 좀 더 넓은 의미에서 보면, LLMs는 내용 생성(텍스트, 이미지, 비디오), 코드 생성, 요약 및 번역 등 다양한 문제를 해결할 수 있는 도구입니다. 자연 언어를 강력한 추상화 계층으로 사용함에 따라, 이러한 모델들은 보편적으로 매력적인 도구 세트를 제공하므로 많은 정보 작업자들에 의해 사용되고 있습니다. 우리의 대화는 LLMs의 여러 면을 포괄하며, 자체 호스팅을 포함하여 클라우드 호스팅된 LLMs보다 맞춤화와 더 큰 제어를 허용합니다. LLMs의 복잡성이 증가함에 따라, 특히 엣지 장치와 제한된 환경에서 작은 형태의 팩터에서 그들을 양자화하고 실행하는 능력에 대해 논의합니다. 우리는 성능 향상을 위한 유망한 ReAct 프롬프트와 함께, 질문과 답변 상호 작용을 넘어서 동적 애플리케이션을 구축하기 위해 사용될 수 있는 LLM 기반의 자율 에이전트에 대해서도 언급합니다. 우리는 또한 LLMs 덕분에 부활하고 있는 여러 벡터 데이터베이스(Pinecone)를 언급합니다. LLMs의 기본 능력, 특히 전문적이고 자체 호스팅 능력은 폭발적으로 성장을 계속하고 있습니다.
ReAct 프롬프트는 LLMs를 프롬프트하는 방법으로, chain-of-thought (CoT)와 같은 경쟁 방법보다 그들의 응답의 정확성을 향상시키기 위해 의도된 방법입니다. 2022년 논문에서 소개된 이 방법은 이유와 행동(따라서 ReAct)을 결합함으로써 작동합니다. 이러한 접근 방식은 LLM의 응답을 더 설명 가능하게 만들고 CoT에 비해 환영을 줄여, 프롬프터에게 원하는 것을 얻을 더 나은 기회를 줍니다. LangChain은 원래 이런 스타일의 프롬프트를 지원하기 위해 개발되었습니다. ReAct 프롬프트를 기반으로 한 자율 에이전트는 우리 팀이 만들었던 LLMs의 응용 프로그램 중 가장 널리 사용되는 것으로 입증되었습니다. 최근에는 OpenAI가 ReAct 및 유사한 프롬프트 스타일을 LangChain과 같은 외부 도구에 의존하지 않고도 쉽게 구현할 수 있도록 API에 함수 호출을 도입했습니다. 이 분야를 정의하는 초기 단계에 있지만, 지금까지 ReAct와 그 후손들은 LLMs의 가장 흥미로운 응용 프로그램 중 일부를 지적해 왔습니다.
대규모 언어 모델의 발전에 따라, 자율 AI 에이전트를 만드는 데 대한 관심이 강하게 나타나고 있습니다. AutoGPT, GPT-Engineer, BabyAGI는 모두 주어진 목표를 파악하고 그것을 향해 작동하는 LLM을 기반으로 한 자율 에이전트의 예시입니다. 이 에이전트는 어디까지 진행됐는지를 기억하고, LLM을 활용해 다음 행동을 결정하고, 액션을 취한 후 목표가 달성되었는지를 판단합니다. 이것은 대체로 ‘체인-오브-쓰어트(chain-of-thought)’ 추론이라고 불리며, 실제로도 효과적으로 작동합니다. 우리 팀 중 하나는 자율 에이전트로 고객 서비스 챗봇을 구현했습니다. 만약 봇이 고객의 목표를 달성할 수 없다면, 자신의 한계를 인지하고 고객을 직접 인간 상담원에게 연결합니다. 이런 접근법은 아직 초기 단계에 있습니다: 자율 에이전트는 높은 실패율을 보이기도 하며, 비싼 AI 서비스 요금이 발생하곤 합니다. 최소한 한 AI 스타트업은 에이전트 중심의 방식에서 다른 방향으로 전환했습니다.