소개
회사 정책상 외부 AI 서비스가 대부분 차단된 상황 (찾는 자와 막는 자의 싸움 중..)
아직 막히지 않아 사용할 수 있는 Cerebras Inference와 VSCode Gemini Extension을 활용해 업무 효율을 높이고자 시도
진행 방법
사용 도구
Cerebras Inference (DeepSeek-R1-Distill-Llama-70B, Llama 3.1 8B/70B, Llama 4 Scout)
VSCode Gemini Extension
Cerebras Inference에는 크게 4가지 모델이 있습니다.
DeepSeek-R1-Distill-Llama-70B:
중국어와 한글, 영어를 섞어서 답변하는 경우가 있어서 초기에 쓰다가 안썼음
사례글 쓰며 테스트해보니 한글로만 잘 답변하는 것으로 보아 재학습한 것 같음
Llama 3.1 8B, Llama 3.1 70B:
그대로 쓸 수는 없고 의심하면서 써야함
Llama 4 Scout:
VSCode Gemini Extension을 찾은 뒤 나와서 쓰지 않았습니다.
비교를 위해 이번에 써봤는데 별로인듯 합니다.
VSCode Gemini Extension:
요새 해당 Extension을 쓰면서 Gemini에 대한 호감도가 올라가고 있습니다.
답변의 품질도 괜찮고, 하기와 같은 기능들이 있습니다.
단점은 초기 프롬프트에 한글로 답변하라고 하지 않으면 영어로 답변하는 경우가 많습니다.
GPT에게 위 서비스들 기반 각각 출력한 코드에 대한 코드 품질 검토 요청
# 요청사항 - 여러 AI 서비스들로부터의 결과 코드 품질 분석해줘. # 질문했던 것 - plotly express로 주축과 보조축을 가지는 꺾은선 그래프와 막대그래프를 한 Chart에 같이 그리고 싶고, 두 그래프는 Scale이 달라서 꺾은선 그래프는 Chart의 중앙에 위치하고 막대그래프는 작게 아래에 위치하게 할거다. # 결과1 ``` import plotly.express as px import pandas as pd import numpy as np # 데이터 생성 np.random.seed(0) data = { 'Category': ['A', 'B', 'C', 'D', 'E'], 'Value1': np.random.randint(1, 100, 5), 'Value2': np.random.randint(1, 100, 5) } df = pd.DataFrame(data) # 꺾은선 그래프 fig1 = px.line(df, x='Category', y='Value1', title='Value1') # 막대그래프 fig2 = px.bar(df, x='Category', y='Value2', title='Value2', height=200) # 두 그래프를 하나의 Chart에 합치기 fig = px.make_subplots(rows=2, cols=1, subplot_titles=['Value1', 'Value2'], shared_xaxes=False, vertical_spacing=0.05, row_heights=[0.6, 0.4]) # 꺾은선 그래프 추가 fig.add_trace(fig1.data[0], row=1, col=1) # 막대그래프 추가 fig.add_trace(fig2.data[0], row=2, col=1) # Chart 설정 fig.update_layout( height=600, width=800, margin=dict(l=20, r=20, t=60, b=20), showlegend=False ) # Chart 표시 fig.show() ``` # 결과2 ``` import plotly.express as px import plotly.graph_objects as go from plotly.subplots import make_subplots import pandas as pd # 샘플 데이터 생성 df = pd.DataFrame({ 'x': [1, 2, 3, 4, 5], 'y1': [10, 20, 30, 40, 50], 'y2': [100, 200, 300, 400, 500] }) # subplot 생성 fig = make_subplots(rows=2, cols=1, row_heights=[0.8, 0.2], shared_xaxes=True) # 주축 꺾은선 그래프 추가 fig.add_trace(go.Scatter(x=df['x'], y=df['y1']), row=1, col=1) # 보조축 막대그래프 추가 fig.add_trace(go.Bar(x=df['x'], y=df['y2']), row=2, col=1) # 레이아웃 설정 fig.update_layout(height=600, width=800, title='주축과 보조축 그래프') # x축 공유 설정 fig.update_xaxes(row=2, col=1, visible=False) # 그래프 표시 fig.show() ``` # 결과3 ``` import plotly.express as px import pandas as pd import numpy as np # 샘플 데이터 생성 np.random.seed(0) df = pd.DataFrame({ 'Category': ['A', 'B', 'C', 'D', 'E'], 'Value1': np.random.randn(5), # 주축 데이터 (중앙에 위치할 꺾은선 그래프) 'Value2': np.random.randn(5) # 보조축 데이터 (아래에 위치할 막대그래프) }) # 주축에 표시할 꺾은선 그래프 fig1 = px.line(df, x='Category', y='Value1', title='주축과 보조축이 있는 차트') fig1.update_yaxes(title_text="주축 (Value1)", rangemode='tozero') # 보조축에 표시할 막대그래프 fig2 = px.bar(df, x='Category', y='Value2', title='주축과 보조축이 있는 차트') fig2.update_yaxes(title_text="보조축 (Value2)", rangemode='tozero', side='right') # 두 그래프를 하나의 Figure에 추가 fig = fig1 fig.add_trace(fig2.data[0], secondary_y=True) # 레이아웃 설정 fig.update_layout( height=600, # 차트의 높이 margin=dict(l=20, r=20, t=40, b=40), # 여백 설정 yaxis=dict( titlefont=dict(size=12), tickfont=dict(size=10) ), yaxis2=dict( titlefont=dict(size=12), tickfont=dict(size=10), overlaying='y', side='right', range=[-2, 2] # 보조축의 범위 설정 (필요에 맞춰 조정) ) ) # 차트 표시 fig.show() ``` # 결과4 ``` import plotly.express as px import plotly.graph_objects as go from plotly.subplots import make_subplots # 샘플 데이터 생성 import pandas as pd import numpy as np np.random.seed(0) date = pd.date_range('2022-01-01', periods=12, freq='M') main_data = np.random.randint(10, 50, size=(12,)) sub_data = np.random.randint(100, 500, size=(12,)) df_main = pd.DataFrame({'date': date, 'main': main_data}) df_sub = pd.DataFrame({'date': date, 'sub': sub_data}) # subplot 생성 fig = make_subplots(rows=2, cols=1, row_heights=[0.7, 0.3], shared_xaxes=True) # 주축(꺾은선 그래프) 추가 fig.add_trace(go.Scatter(x=df_main['date'], y=df_main['main'], name='Main'), row=1, col=1) # 보조축(막대그래프) 추가 fig.add_trace(go.Bar(x=df_sub['date'], y=df_sub['sub'], name='Sub', yaxis='y2'), row=2, col=1) # 보조축 설정 fig.update_layout( yaxis2=dict( overlaying='y', side='right', range=[0, max(df_sub['sub'])*1.1] ) ) # 레이아웃 설정 fig.update_layout(height=600, title_text='Main and Sub Data', xaxis_title='Date') # Show fig.show() ``` # 결과5 ``` import plotly.graph_objects as go import pandas as pd # 1. 샘플 데이터 생성 # 실제 데이터를 사용하시면 이 부분을 대체해주세요. data = { 'Category': ['A', 'B', 'C', 'D', 'E'], 'LineValue': [150, 180, 130, 200, 160], # 꺾은선 그래프 데이터 (큰 스케일) 'BarValue': [25, 15, 35, 10, 30] # 막대 그래프 데이터 (작은 스케일) } df = pd.DataFrame(data) # 2. Figure 객체 생성 fig = go.Figure() # 3. 꺾은선 그래프 추가 (주축 Yaxis 'y1' 사용) # yaxis='y1'은 기본값이지만 명시적으로 지정하여 가독성을 높일 수 있습니다. fig.add_trace(go.Scatter( x=df['Category'], y=df['LineValue'], name='꺾은선 데이터 (주축)', mode='lines+markers', # 선과 마커 함께 표시 yaxis='y1' )) # 4. 막대 그래프 추가 (보조축 Yaxis 'y2' 사용) fig.add_trace(go.Bar( x=df['Category'], y=df['BarValue'], name='막대 데이터 (보조축)', yaxis='y2' # 보조 Y축(y2)을 사용하도록 지정 )) # 5. 레이아웃 설정 fig.update_layout( title_text='꺾은선(주축)과 막대(보조축) 그래프 조합', xaxis=dict( domain=[0.05, 0.95] # X축이 전체 너비 사용 (약간의 여백) ), yaxis=dict( title='꺾은선 축 값 (주축)', domain=[0.25, 1.0] # Y축 공간의 위쪽 75% 사용 (꺾은선 그래프 영역) ), yaxis2=dict( title='막대 축 값 (보조축)', overlaying='y', # y1 축 위에 겹치도록 설정 (x축 공유) side='right', # 보조축 눈금/레이블을 오른쪽에 표시 domain=[0, 0.2], # Y축 공간의 아래쪽 20% 사용 (막대 그래프 영역) showgrid=False, # 보조축의 그리드 라인 숨기기 (선택 사항) anchor='x' # x축에 고정 ), legend=dict( orientation="h", # 범례 가로 방향 yanchor="bottom", y=1.02, # 범례 위치 조정 (차트 위쪽) xanchor="right", x=1 ), margin=dict(l=50, r=50, t=80, b=50) # 차트 여백 조정 ) # 6. 차트 표시 fig.show() ```
Llama 3.1 8B : 코드가 아예 틀렸음
Llama 3.1 70B : 제 의도와 다름
DeepSeek-R1-Distill-Llama-70B : 중국산은 쓰지 맙시다.
Llama 4 Scout : Main 그래프는..?
VSCode Gemini Extension : plotly express를 쓰지는 않았지만 결과만 좋다면야 ㅎ
결과와 배운 점
쓸모는 없지만 Cerebras 에서 답변에 걸린 시간 등을 확인할 수 있습니다.
굳이 저처럼 제약된 환경이 아니라면 쓸 서비스는 아닌 것 같습니다.
개인 프로젝트를 진행하며 Gemini와 GPT를 같이 코딩에 써본 결과, Gemini 의 코드가 더 맘에 드는 경우도 종종 있습니다.
다만, Gemini Extension에서는 이전 대화 내역을 수정할 수 없기 때문에
GPT를 기반으로 전체적인 코드를 짜고
GPT가 짜준 코드가 맘에 들지 않거나 의심이 가면 Gemini Extension을 써서 확인하고는 합니다.