달력

5

« 2025/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

 

지난 4월에 Open AI에서 공개한 Open AI Cli는 터미널 환경에서 사용할 수 있도록 만들어진 경량의 AI 코딩을 지원하기 위해서  목적으로 만들어진 툴인데, 유튜브를 통해서 사용하는 것을 보고서, 여러가지 자료를 찾아 보니 특정한 환경에서만 사용하지 않고, 추가적인 기능도 만들어서 사용이 가능하도록 확장성 있게 구조가 만들어져 있었다. 

 

Codex는 터미널 환경에서 동작하도록 만들어져 있어서 python 기반으로 만들어졌다고 생각했는데, Github에 올라와 있는 소스코드를 보면, javascript와 typescript와 python코드가 혼재 되어 있다.

 

Codex Cli의  설치방법은 NPM을 이용하기 때문에 간단하게 설치 할 수 있는데, 기본 모델은 Open AI에서 만들어서인지 오픈소스로 Github에 공개되었지만 Open AI의 Model(o4-mini)과 API를 사용해야 한다. 

 

뭐, Open AI에서 만들어 졌으니까 그렇겠지라고 생각할 수 있지만 사실은 다양한 다른 모델들을 사용할 수 있도록 설계되어 있고, 실제로 동작이 가능하다. (세부내용은 gitbub의 readme를 한번 보는것이 많은 도움이 된다.)

 

github에 등록되어 있는 codex cli의 소스 코드는 다음과 같으면 실제 동작 및 환경도 readme파일을 참조해서 설치하고 동작 확인도 가능하다. 

 

[codex cli github]

https://github.com/openai/codex

 

구글의 Gemini 모델을 사용하는 방법은 다음과 같이 진행하면 되는데,

먼저, 설치는 nodejs 환경에서 진행되어야 하므로, 사용하고 있는 nodejs 버전을 nodejs v. 22이상으로 설치되었다고 가정하고 설치를 해 보도록 하겠다.

 

[기본 동작 환경]

Operating systems macOS 12+, Ubuntu 20.04+/Debian 10+, or Windows 11 via WSL2
Node.js 22 or newer (LTS recommended)
Git (optional, recommended) 2.23+ for built-in PR helpers
RAM 4-GB minimum (8-GB recommended)

 

nodejs의 설치 버전은 'node -v'를 이용해서 확인 할 수 있다.

node -v

 

 

Open AI의  codex설치는 npm을 이용해서 다음과 같이 실행하면 설치가 진행된다.

npm install -g open-codex

 

Open AI의 모델을 사용하기 위한 API Key가 있다면  다음과 같이 Open AI에서 생성한 API-Key값을 "your-api-key-here"에 대신 넣어주고 환경변수로 등록해주면 바로 사용이 가능한 준비가 된다. 

export OPENAI_API_KEY="your-api-key-here"

 

하지만, 내가 원하는 것은 Open AI의 API 대신에 구글의 Gemini를 사용하는 것이기 때문에 위와 같이 환경변수에 등록하지 않고, 다음과 같이 등록해 주어야 한다. 

export GOOGLE_GENERATIVE_AI_API_KEY="your_api_key_here"

 

(참고로, 환경 변수에 등록되는 키는 codex에서 사용하는 Model을 선택할 수 있기 때문에 변수명은 각각 다르다.)

 

다음은 모델을 설정하는 방법을 설명하려고 하는데, cli를 이용해서 실행할 모델을 선택하는 방법도 있지만, 지속적으로 사용할 수 있도록 config 파일을 이용하는 방법을 이야기 하려고 한다.

 

설정 파일은 홈 디렉토리 아래의 ".codex/config.json" 파일인데, 간단하게 vi 에디터를 이용해서 다음과 같이 호출하면 된다.

vi ~/.codex/config.json

 

그리고 다음과 같이 provider에 "gemini", 그리고 model에는 'gemini-2.0-flash'를 넣어주면 된다.

  1 {
  2   "provider": "gemini",
  3   "model": "gemini-2.0-flash"
  4 }
  5

 

설정이 완료되었으면, open-codex cli를 실행한다. 실행 명령어는 다음고 같다.

open-codex

 

명령을 실행하면 다음과 같은 차이 나타날 것이다. (성공이다)

 

 

다음과 같이 파이썬 코드를 만들어 달라고 input 창에 요청하면 코드를 생성해 준다.

make a python code for sum of numbers. from 1 to 100

 

 

코드가 잘 만들어 졌다. 

 

추가적으로 이코드를 실행하고 결과를 보여달라고 하면 결과도 잘 보여준다.

 

Gemini는 영어 뿐만이 아니라 한글도 잘 이해한다.

아래는 10까지의 합을 한국어로 요청한 결과를 보여준 것이다.

 

'공부하는 것 > AI & Agent' 카테고리의 다른 글

요즘 공부하는 것은 바로 AI 그리고 Agent.  (0) 2025.04.27
:
Posted by 행복상자

개발자들에게서 세상의 변화는

개발자에게 늘 새로운 것들을 이해하고 받아들이고 또 적응하기 위해서 필요한 공부할 것들로 나타난다.

나에게도 이것은 정말 끊임이 없었고 앞으로도 개발을 한다면 이 또한 지속될 것이다.

 

딥마인드의 알파고와 이세돌 9단의 세기의 대결이 벌어지 2016년도 이후로,

세상은 AI에 대한 급격한 관심과 이를 활용하기 위한 연구들로 인해 기술적으로 급성장을 하게 되었고,

AI대한 기술을 발전과 더불어서 세상으로 세상으로 퍼져만 갔다. 

우리 세대는 알겠지만, 세상에 인터넷이 보급되고 확산되면서 이전의 삶과 생활은 지속적으로 변화해서

지금의 세상으로 변화 하였다.  현재에는 과거의 인터넷과 같은 파괴력을 AI가 우리의 삶을 변화 시킬 것이다. 

 

 

나도 개발자로서 입문한 이후로 공부하고 새로운 것들을 받아들이면서 자기개발, 자기만족을 이어갔지만 

AI의 도래를 삶으로 생활로 받아들이는 것은 쉽지만은 않기 때문에, 시간이 내서 지난 몇년간

관심있게 기술의 변화와 발전을 지켜보면서 공부하고 학습을 이어갔는데, 이제는 이론적인것이 배울 단계가 아니라

일반 개발자들도 실제적으로 응용이 가능한 시간이 되었다고 생각을 하게 된다.

 

이전까지는 AI는 대기업이나 큰 연구소에서 상당한 재원과 인력을 동원해야 어느정도 커버할 수 하고,

신규 모델을 만들거나 학습을 시키기 위해서는 많은 시간이 필요하고, 활용할 수 있은 수준에 도달하기 위해서는

전문인력들과 박사님들의 지식과 경험이 있어야 가능하고 생각했었다. 

 

하지만, 요즘의 OpenAI와 Google에서 만들어 내는 모델과 기술의 수준을 볼때,

이제는 학습을 시키는 것이 아니라 어떻게 사용해야 하는지 응용을 위해서 더 많은 생각과 아이디어를 뽑아내야 한다.

이것은 마치 성능 Database를 만들어 내는 것이 아니라 이를 잘 활용해서 데이터를 잘 조회하고 이용하는 것과 

같은 것이다. (엔지니어링의 관점에서 접근해도 좋은 시기가 된 것으로 생각한다.)

 

작년부터 LVM을 개발하기 위해서 Google의 Vertex AI와 gemini를 사용해오고 있는데,

새로운 버전이 나오는 3개월마다 기능과 성능의 발전 속도는 늘 나의 예상을 뛰어 넘고 있다.  

특히, Agent는 올해의 관심의 중심에 있는 것으로 기존의 AI는 말과 생각을 이해하고 대화하는 것이라면,

여기에 손과 발을 달아주어 원하는 기능을 구동하고 실행할 수 있도록 해주는 전문가(또는 기능들)이라 할 수 있다.

 

 

지금의 내가 가장 관심이 많은 기술분야이고 또 재미있다고 생각하고 AI.

 

올해는 다시 블로그에 나의 관심사이자 공부하는 흔적들을 남기려고 함다.  

 

'공부하는 것 > AI & Agent' 카테고리의 다른 글

OpenAI Codex Cli에서 Gemini 모델 사용하기  (1) 2025.05.01
:
Posted by 행복상자
2019. 12. 9. 23:15

.NET Core 3.1 발표를 보면서... 공부하는 것2019. 12. 9. 23:15

지난 12월 3일에 닷넷 3.1에 대한 발표에 대한 이야기를 필리핀 출장중에 보았다. 그리고 한국에 돌아와서 간락하게 살펴보기 시작을 하였는데, 아직까지는는 .Net Core는 많은 부분들이 정리중인 과정으로 생각이 들었다. 

 

.Net Core 3.1은 Visual Studio 2019 16.4버전에 포함해서 배포되고 있기 때문에, 신규 .Net Core업데이트보다는 VS Studio를 하는 것이 사용하기에 용이하다.

 

변경사항은 아래의 링크를 참고하면 된다.

[Release Note]

https://github.com/dotnet/core/tree/master/release-notes/3.1

 

[지원 Platform] 

  - Alpine: 3.10+
  - Debian: 9+
  - Ubuntu: 16.04+
  - Fedora: 29+
  - RHEL: 6+
  - openSUSE: 15+
  - SUSE Enterprise Linux (SLES): 12 SP2+
  - macOS: 10.13+
  - Windows Client: 7, 8.1, 10 (1607+)
  - Windows Server: 2012 R2+

 

기능적으로는 Windows Form의 Control들이 .Net Core 3.1에서는 다음의 기능들이 제거 되었다.

  • DataGrid
  • ToolBar
  • ContextMenu
  • Menu
  • MainMenu
  • MenuItem

원래  .Net framework에서 잘 제공하고 있던 기능들이어서 .Net Core에서는 신규로 제공되는 기능에 집중하기 위해 제되시켰다. (사실 두가지를 제공할 수 도 있는데, 혼란을 피하려는 의도로 보인다.)

:
Posted by 행복상자

요즘 갑자기 C#을 다시 손을 대는 있어서, 오래된 기억을 다시 들추어 보려는 목적을 가지고 책을 한번 읽기 시작하였다.

사실 이 책은 C#으로 예제 코드를 가지고 설명을 하고 있지만, C#만을 위해서 설명하기보다는 프로그래밍의 전반적인 면에서 하나씩 이야기를 풀면서 접근하고 있다. 

 

책의 두께는 약 200페이지가 조금 넘는데, 생각보다 많기는 하지만 약은 그렇게 많지는 않아서 읽기는 무척 수월하다.

 

[책 표지]

저자는 5명이 Chapter를 나누어서 작성하였는데, 소프트웨어 공학을 바탕으로 글을 쓰고 있어서, 내용상으로 일관성을 유지하기는 하지만, 구체적인 이야기와 에피소드가 적어서 조금 딱딱하게 느껴질 수 있다. 

어떻게 소프트웨어의 품질을 유지하면서 개발을 코딩을 할 것인가에 초점이 맞추어져 있어서, 대학에서 강의를 들을때의 학구적이지만, 재미는 없는 그런 타입의 책이 되어서 조금 아쉽다.

 

하지만, 내용상으로는 한번씩 읽어 보아야 할 부분들이 많다.

요즘의 개발은 agile을 빠른 개발이 이전의 10년 ~20년 전과는 사뭇 다르다. 잘 만들어진 컴포넌트와 프레임워크가 개발자로서의 고민과 해야 할 일들을 대신해주기 때문에, 다시 한번 초심으로 돌아간다라는 생각을 가지고 읽어 본다면, 여러 가지를 다시 한번 생각하게 해 줄 것이다.

 

조금 오래동안 개발에 몸 담고 있는 개발자라면, 이 정도는 나도 이미 하고 있어라고 이야기할 수 있지만, 하고 있는 것이 중요한 것이 아니라, 왜 해야 하는지를 다시 한번 생각해보는 것이 좋을 것 같다.

 

유지보수라는 주제는 완벽하지 않음에서 비롯될 수 밖에 없다.

완벽하다면, 변경이 필요없겠지만, 사람도 시스템도 완벽할 수는 없기 때문에 개발이 완료되고 론칭을 잘 되었어도 언제고 유지보수라는 단계는 필요해지기 마련이다.

 

개발중에도 검토되지 않은 환경을 위해서 얼마만큼을 변경될지를 가늠해서 미리 코드를 만들어 넣어야 할지도 개발자에게는 고민 중의 하나이다.  

 

기능적인 확장성과 코드의 재사용성을 위해서 테스트 코드는 굉장히 중요하고, 단순하고 이해하기 쉬운 코드를 작성하는 것이 유지보수를 위해서 반드시 필요한 기술이다. 

이외에도 아키텍처상으로 컴포넌트를 느슨하게 결합하거나, 모듈들 기능과 관심사 별로 분리하는 것도 구조을 잡는데 도움이 된다. 하지만, 역시 이러한 것들은 말보다는 직접 해봐야 알 수 있는 것들이다.

 

알고 있는 것을 다 적용하기는 시간과 비용측면에서도 고려되어야 할 측면들이다. (우리는 아는 것이 너무 많다.)

개발자에게 주어진 환경은 언제나 변화무쌍하다. 적절하게 칼을 잘 골라 쓴다면, 여러 가지로 이로울 것이다. 

 

'공부하는 것' 카테고리의 다른 글

.NET Core 3.1 발표를 보면서...  (3) 2019.12.09
새로운 Text.Json APIs  (0) 2019.06.16
요즘 내가 공부하는 것  (1) 2019.06.07
Visual Studio Code 1.0 정식 Released  (2) 2016.04.16
알고리듬 성능비교 - Selection Sort  (0) 2016.02.27
:
Posted by 행복상자