-
게시글
10 -
첫 방문
-
최근 방문
-
Days Won
2
Content Type
Profiles
Forums
Events
Articles
Everything posted by hyejeongjo
-
@CLOVA Studio 운영자9 추가로 아래와 같이 image_url 관련 내용을 전체 삭제했을 경우에도 에러가 발생하는데, > type=image_url로 작성된 HumanMessage 내 content 일부를 삭제하면 정상 작동합니다. 이 부분을 어떻게 수정하셨는지 여쭤보아도 될까요 ? BadRequestError: Error code: 400 - {'error': {'message': 'Unsupported input format', 'code': '40009'}}
-
@CLOVA Studio 운영자9 네, Function calling 기능이 없어 직접 구현하며 테스트해본 사례인데요. (HCX 내의 function calling이 아닌 여러 call들을 구성하여 이미지 내에서도 가능하도록 테스트 중에 있습니다.) HCX의 function calling 을 사용하지 않아도 메세지 (Image msg+tool message) 를 함께 포함할 수 없는걸까요?
-
안녕하세요, HCX-005를 활용해 아래 쿼리를 넣었을 때 BadRequestError가 나오는 것을 확인했는데요. 디버깅을 계속 해봐도 어떤 문제인지 알 수 없어서 문의 드립니다. 혹시 입력 값 중 어떤 것이 잘못되었을 까요? (gpt 는 동일 입력 시 정상 작동하여 문의 드립니다.) from langchain_core.messages import AIMessage, AIMessageChunk, HumanMessage, ToolMessage, SystemMessage from langchain_openai import ChatOpenAI from langchain_naver import ChatClovaX hcx = ChatClovaX(model="hcx-005", temperature=0, api_key="nv-xx") msg = [ SystemMessage(content='당신은 엄격한 JSON 생성기입니다. \n\nCORE RULES:\n- **반드시 JSON 형식으로만 응답하세요. 다른 형식은 절대 사용하지 마세요.**\n- 정확히 하나의 JSON 객체만 출력하세요.\n- 제공된 "spec" 스키마를 정확히 따르세요: 키, 타입, 중첩, 필수 필드, 허용 값.\n- 추가 키, 주석, 설명문, 코드 블록을 사용하지 마세요.\n- 문자열은 유효한 JSON 문자열이어야 합니다: \\" (따옴표), \\\\ (백슬래시), \\\\n (개행), \\\\t (탭).\n- 불린: true/false (소문자). Null: spec에서 허용하는 경우에만 null. 숫자: 유효한 JSON 숫자만.\n- spec에 제시된 키 순서를 존중하세요.\n- 일부 필드가 문서에 누락된 경우, spec과 일치하는 최소한의 유효한 placeholder를 생성하세요:\n * string → ""\n * number → 0\n * boolean → false\n * list → []\n * object → {}\n * Optional → null\n * enum → choose the safest or first allowed value\n- 출력 전에 항상 spec에 대해 출력을 검증하세요. 유효하지 않으면 조용히 재생성하세요.\n- **응답은 반드시 { 로 시작하고 } 로 끝나야 합니다.**\n- **JSON 객체만 출력하고, 다른 것은 출력하지 마세요.**\n- 사용자의 입력을 보고 **도구 목록**을 확인한 후, 아래 지침에 따라 응답하세요.\n\n## 도구 목록\n- get_weather: 날씨 정보를 얻는 도구\n- calculator: 문제를 풀 수 있는 도구. 사용자가 문제 풀이를 원하면 해당 도구를 선택하세요.\n\n### 1. 도구가 필요하다고 판단되는 경우\n- "도구가 필요하다"의 의미: 사용자의 요청이 **도구 목록에 있는 도구로 처리할 수 있는 경우**입니다. \n- 이때는 반드시 JSON 형식으로만 답변하세요. \n- 여러 개 도구를 동시에 선택할 수 있으며, 선택 시 도구 이름(`tool`)만 나열합니다. \n- JSON 외의 텍스트는 절대 포함하지 마세요. \n- 필요한 경우에만 적절한 도구를 선택하세요. \n\n출력 예시:\n{\n "calls": ["get_weather", "search"]\n}\n\n### 2. 도구가 필요하지 않다고 판단되는 경우\n- 도구를 선택하지 않습니다.\n- 아래와 같이 리스트 응답을 비워둡니다.\n\n출력 예시:\n{\n "calls": []\n}\n', additional_kwargs={}, response_metadata={}), HumanMessage(content=[{'type': 'text', 'text': 'x^2-4x+4 = 0 이거 어떻게 풀어'}, {'type': 'image_url', 'image_url': {'url': 'https://dimg.donga.com/wps/NEWS/IMAGE/2014/11/17/67941705.3.jpg'}}], additional_kwargs={}, response_metadata={}, id='ee827eb5-344d-4f98-81da-8ae61a09ca4a'), HumanMessage(content='사진을 보고 system prompt의 규칙에 따라 JSON 응답을 생성합니다.', additional_kwargs={}, response_metadata={}, id='972df05c-9911-4ce1-b506-765e6c998efb'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_0-1a8a8d6a', 'type': 'function', 'function': {'name': 'calculator', 'arguments': {'problem': '문제 내용 입력', 'explanation': '해설 내용 입력', 'answer': '정답 내용 입력'}}}], 'refusal': None}, response_metadata={'token_usage': {'input_tokens': 1923, 'output_tokens': 10, 'total_tokens': 4335, 'input_token_details': {}, 'output_token_details': {}}}, id='060d1daa-1a6e-43b1-90f9-48223b8b00ba', tool_calls=[{'name': 'calculator', 'args': {'problem': '문제 내용 입력', 'explanation': '해설 내용 입력', 'answer': '정답 내용 입력'}, 'id': 'call_0-1a8a8d6a', 'type': 'tool_call'}]), ToolMessage(content='문제 정답은 정답 내용 입력 이고, 풀이과정은 해설 내용 입력 입니다.', name='calculator', id='2d358e4a-5ad9-4185-96ce-8a61936b0ec7', tool_call_id='call_0-1a8a8d6a'), HumanMessage(content='사진을 보고 system prompt의 규칙에 따라 JSON 응답을 생성합니다.', additional_kwargs={}, response_metadata={}) ] hcx.invoke(msg) 결과: File ~/Desktop/WORKS/edu-max-model/.venv/lib/python3.11/site-packages/openai/_base_client.py:1047, in SyncAPIClient.request(self, cast_to, options, stream, stream_cls) 1044 err.response.read() 1046 log.debug("Re-raising status error") -> 1047 raise self._make_status_error_from_response(err.response) from None 1049 break 1051 assert response is not None, "could not resolve response (should never happen)" BadRequestError: Error code: 400 - {'error': {'message': 'Bad request', 'code': '40000'}}
-
@CLOVA Studio 운영자 네, 계속해서 해당 이슈가 발생하고 있어 system/user prompt 및 model parameter 해당 링크로 공유 드렸습니다. 번거로우실텐데 감사드립니다.
-
> User 인풋에도 prefix나 후행 문구를 붙여 출력 양식을 유도하는 것이 효과적인 경우가 많습니다. 이부분은 모르고 있었네요, 프롬프팅 + 가이드 주셔서 감사드립니다. 🙇♀️
-
넵, 빠른 답변 주셔서 감사드립니다. @clovastudio 님. 답변주신 호출 예시로 정상 동작하는 점 확인했습니다. 그리고 이미지 입력에 대한 프롬프팅은 말씀 주신 케이스 포함하여 (user prompt 제외, CoT 접근, few-shot 시도 등) 여러 전략을 시도해보았으나, 해당 이미지를 포함하여 개선이 되지 않았습니다. (관련 이미지 중 30%는 fail하고 있습니다./fail 기준: json으로 응답이 나오고 있지 않음) 일반적인 전략 외에 HCX 이미지 정보 추출을 위한 별도 가이드 라인이 있는지 궁금합니다. + 추가로 HCX-005에서도 structured output을 지원을 고려하고 계신지 궁금합니다.
-
추가로 hcx-005 이미지 입력시 instruction following 이 잘 안되는 현상도 있는데요, 아래 예제에 대해 json format으로 오지 않는데 혹시 이미지 입력 시에 instruction following 을 잘 할 수 있는 프롬프팅 전략이 있는지 궁금합니다. from langchain_core.messages import HumanMessage, SystemMessage from langchain_naver import ChatClovaX system_prompt = """ - AI 언어모델은 사용자를 위해 이미지에서 정보를 추출하는 어시스턴트입니다. - 사용자 요청을 수행하기 위해 필요한 정보를 이미지에서 추출합니다. - 문제를 푸는 것이 아니라, OCR처럼 이미지에 담긴 텍스트를 추출합니다. - 반드시 이미지에서 정보를 **추출**합니다. 이미지 속 질문에 대한 답변을 작성하는 것이 아닙니다. - json 형식으로 응답합니다. - json 응답 구조는 아래와 같습니다. ## 출력 형식 (json) ```json { "image_description": "2x+3=5 일때, x의 값은?", } ``` - 반드시 json 형태로 응답합니다. - 문제를 푸는 것이 아니라, OCR처럼 이미지에 담긴 텍스트를 추출합니다. - 문제를 풀지마세요. AI 언어모델의 임무는 이미지에서 문항 정보를 추출하는 것이지 문제를 푸는것이 아닙니다. """ user_msg_1 = """ 이 문제 풀어줘 """ sys = SystemMessage(content=system_prompt) image_1 = HumanMessage(content=[{"type": "image_url", "image_url": {"url": "https://samtoring.com/qstn/gF9N2iHRY58JuJ3ZHRU3.png"}}]) user_1 = HumanMessage(content=user_msg_1) llm = ChatClovaX(model="HCX-005", api_key="xx") response = llm.invoke(messages) print(response.content) 결과: $ \dfrac { \sqrt { 3 } } { 3 } > 0$ 이므로 $θ = \dfrac { \pi } { 6 } $ 이다. $\therefore\:$$\text{sin} θ = \dfrac { \sqrt { 3 } } { 3 } , \quad \text{cos} θ = \dfrac { \sqrt { 2 } } { 2 } $ $ ∴ 2\text{sin}\left(θ-\dfrac{\pi}{6}\right) + \text{cos} θ$ $=2\text{sin}\dfrac{\pi}{6}-\text{cos}\dfrac{\pi}{6}+\dfrac{\sqrt{2}}{2}$ $=\dfrac{2\times\dfrac{1}{2}}{\dfrac{\sqrt{2}}{2}}+\dfrac{\sqrt{2}}{2}=\dfrac{\sqrt{3}}{3}+\dfrac{\sqrt{2}}{2}$
-
안녕하세요 hcx-007 모델을 테스트 중에 잇는데요 아래 형식으로 응답 보낼 시에 에러 응답이 오고 있는데, 공식 문서와 동일하게 보낸 것이어서요 --header 'Content-Type: application/json' \ --header 'Accept: text/event-stream' \ --data '{ "messages": [ { "role": "system", "content": "- 친절하게 답변하는 AI 어시스턴트입니다." }, { "role": "user", "content": "오늘의 최고 기온은 32도, 최저 기온은 15도, 강수확률은 30%입니다." } ], "topP": 0.8, "topK": 0, "temperature": 0.5, "repetitionPenalty": 1.1, "stop": [], "responseFormat": { "type" : "json", "schema": { "type": "object", "properties": { "temp_high_c": { "type": "number", "description": "최고기온(섭씨)" }, "temp_low_c": { "type": "number", "description": "최저기온(섭씨)" }, "precipitation_percent": { "type": "number", "description": "강수확률(%)", "minimum": 0, "maximum": 100 } }, "required": [ "temp_high_c", "temp_low_c", "precipitation_percent" ] } } }' id:9b793959adbc4c9abf61b7b8e866a35c event:error data:{"status":{"code":"40001","message":"Invalid parameter: thinking, responseFormat"}} 혹시 어떤 부분이 문제일까요? thinking param은 애초에 optional이고 structured_output과 동시 사용이 불가한데 왜 해당 응답이 발생하는지 궁금합니다. 또 hcx-007은 이미지 입력이 불가한 모델로 알고 있는데 가이드 상에 설명으로는 이미지 입력도 가능한 것으로 보여 가능한 것인지 추가 문의 드립니다.
-
네, 예시 프롬프트는 아래와 같습니다. system prompt 사용자 요청을 분석하여 아래 정보를 추출하세요.~~ 예시) 사용자 요청 2+3이 뭐야? 답변 subject: 수학 unit: 덧셈과 뺄셈 section: 한자리수의 덧셈 위의 형식으로 된 프롬프트에 feature 값들이 \n 구분자로 잘 나오고 있었는데요. (마지막 확인일: 6/16일) 프롬프트, 파라메터 변경 없이 6/16이후 테스트 해보니 \n 구분 없이 응답이 출력되고 있습니다. 이전 출력 (6/16이전) subject: 수학\nunit: 0-0. 기타\nsection: \ntopic: 두 자연수의 합 구하기 이후 출력 (6/16이후) subject: 수학unit: 0-0. 기타section: \ntopic: 두 자연수의 합 구하기 \n을 기준으로 feature를 뽑아내는 llm들이 \n구분 없이 출력되고 있어, 모델 체크포인트가 변경된 것인지 여쭤보고 싶습니다.
-
안녕하세요, HCX-005 응답이 기존과 다르게 나오는 것 같아 업데이트가 된 것인지 여부를 여쭤보고자 합니다. 코드는 어제와 동일한데, 오늘자로 실험해보니 \n 구분자로 나와야 하는 feature 값들이 구분 없이 나오고 있습니다. param 등 다 동일해서, hcx-005 의 출력이 갑자기 다르게 나오는 것 같아 문의 드립니다.