Jump to content

CLOVA Studio 운영자9

Members
  • 게시글

    79
  • 첫 방문

  • 최근 방문

  • Days Won

    10

Everything posted by CLOVA Studio 운영자9

  1. 안녕하세요 @sang님, 해당 에러는 정상적인 서비스 API 키를 이용하고 계시지만 이용하시고자 하는 모델로 서비스 앱이 없을 때 발생하는데요. 동일한 계정으로 발급받은 서비스 API 키와 등록된 서비스 앱 이용하고 계시는 게 맞는지 한번 확인 부탁드리며, 맞는데도 불구하고 에러가 발생하는 경우 서비스 문의하기를 통해 계정 정보를 공유해주시면 상세 확인 도와드리겠습니다. 감사합니다.
  2. 안녕하세요 @hyejeongjo님, 말씀드린대로 현재 CLOVA Studio의 HCX-005 모델로는 이미지 입력과 Function calling을 동시에 이용하실 수 없는데요. 이미지 URL을 포함하는 메시지가 있는 상태에서 tool 메시지를 입력할 경우 이미지에 기반한 Function calling 기능을 활용하는 요청으로 간주되어 에러가 발생할 것으로 보입니다. 해당 제약사항을 감안하되 최대한 이미지에 기반한 Function calling을 구현하는 방법을 찾고 계신 것으로 이해하였습니다. 아래와 같이 두 단계로 나누어 API를 호출하는 방법을 고려해보실 수 있을 것으로 보입니다. 다만 각 단계별로 적절한 시스템 및 유저 프롬프트 작성이 필요할 것으로 보입니다: 1) 이미지 속 정보 추출, 2) 추출된 정보(text) 기반 Function calling image_url 관련 내용을 삭제했을 때 정상 작동하는 케이스를 아래와 같이 알려드립니다. 40009 에러의 경우 보통 이미지 입력 지원을 하지 않는 모델에서 이미지 입력을 했을 때 발생하는 에러인 점 참고 부탁드립니다. # 라이브러리 로드, API 키 설정 등은 완료된 것으로 간주 hcx = ChatClovaX(model="HCX-005", max_tokens=1025) 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 이거 어떻게 풀어'}], 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={}) ] res = hcx.invoke(msg) print(res.content) 위 코드 실행 결과 아래와 같은 출력을 얻을 수 있는 것으로 보입니다: ```json { "result": { "정답": "정답 내용 입력", "풀이과정": "해설 내용 입력" } } ``` 감사합니다.
  3. 안녕하세요 @hyejeongjo님, 해당 에러는 HCX-005에서 이미지 입력(Vision)과 Function calling 기능을 동시에 이용하고자 하셔서 발생하는 에러로 보입니다. type=image_url로 작성된 HumanMessage 내 content 일부를 삭제하면 정상 작동합니다. 가이드에 명시된 바와 같이 두 기능은 함께 사용하실 수 없는 점 참고 부탁드립니다. 관련하여 에러 코드 및 메시지는 개선할 수 있도록 하겠습니다. 첨언드리자면 말씀주신 것과 같이 이용하실 경우 모델이 사용 가능한 도구 목록에 대한 정의가 되지 않기 때문에 성능이 떨어지는 이슈가 있을 수 있습니다. (CLOVA Studio만의 문제는 아니고, OpenAI 등 타 서비스에서도 마찬가지일 것으로 보입니다.) 따라서 LangChain에서의 일반적인 Tool use 방식으로 사용하실 것을 권장드립니다. 감사합니다.
  4. 안녕하세요 @프란군님, HCX-007 모델의 추론 기능을 켜고 이용했을 때 시스템 프롬프트의 지시사항을 따르지 않는 경향성이 있다고 제보주신 것으로 이해했습니다. 맞을까요? 일반적으로 HCX-007 모델은 추론 기능 이용 여부와 무관하게 이전 모델들보다 지시사항 수행 능력이 향상되었으나, 경우에 따라 추론 길이가 길어지는 등의 사유로 인해 지시사항 일부를 누락할 수는 있을 것 같은데요. 혹시 프롬프트를 공유해주실 수 있다면 보다 자세히 살펴보고 말씀드릴 수 있도록 하겠습니다. 포럼을 통해 공유주시기 어렵다면 이용문의를 통해 전달주시면 됩니다. (문의 유형에서 AI Services > CLOVA Studio 선택) 감사합니다.
  5. 안녕하세요 @jhkim2님, 최대 10개까지 발급받을 수 있는 서비스 API 키는 삭제하지 않는 이상 계속해서 유효하게 이용하실 수 있습니다. 즉, 이미 서비스 API 키가 있는 상태에서 새로운 서비스 API 키를 발급받는다고 기존 서비스 API 키가 무효가 되거나, 이용 중지되지 않으므로 추가 발급받으셔도 되겠습니다. 10개의 서비스 API 키 각각을 특정 서비스 앱에 지정하는 기능은 따로 제공하지 않고 있으나, 사용자께서 직접 그렇게 관리하여 운영하시는 데에 문제는 없습니다. 감사합니다.
  6. 안녕하세요 @탱구탱구님, 말씀주셨던 이슈 어제 배포된 langchain-naver v0.1.1부터는 발생하지 않는 것으로 보이는데요. 패키지 업데이트 후에도 재현이 된다면 말씀 부탁드립니다. 자세한 내용은 아래 문서를 확인 부탁드립니다. 사용해보시고 궁금한 점이나 개선 의견이 있으시면 편히 말씀주세요. 감사합니다. https://python.langchain.com/docs/integrations/chat/naver/
  7. 안녕하세요 @hyejeongjo님, HCX-007를 통해 제공하는 structured outputs 기능을 정식 지원하는 langchain-naver v0.1.1이 배포되어 안내드립니다. 패키지 업데이트 후 이용하실 수 있을 것으로 보입니다. 자세한 내용은 아래 가이드 문서 참고 부탁드리며, 궁금하신 점이나 개선 의견 있으시면 언제든 편히 말씀주십시오. 감사합니다. https://python.langchain.com/docs/integrations/chat/naver/#structured-outputs
  8. 안녕하세요 @천세현님, 어제 배포된 langchain-naver v0.1.1부터 추론(thinking) 모델을 정식 지원합니다. 패키지 업데이트 후 이용하실 수 있을 것으로 보입니다. 자세한 내용은 아래 문서를 확인 부탁드립니다. 사용해보시고 궁금한 점이나 개선 의견이 있으시면 편히 말씀주세요. 감사합니다. https://python.langchain.com/docs/integrations/chat/naver/#thinking
  9. 안녕하세요 @choi.wb님, 어제 배포된 langchain-naver v0.1.1부터 추론(thinking) 모델을 정식 지원합니다. 패키지 업데이트 후 이용하실 수 있을 것으로 보입니다. 자세한 내용은 아래 문서를 확인 부탁드립니다. 사용해보시고 궁금한 점이나 개선 의견이 있으시면 편히 말씀주세요. 감사합니다. https://python.langchain.com/docs/integrations/chat/naver/#thinking
  10. 안녕하세요 @choi.wb님, 해당 기능 지원을 위해 langchain-naver 패키지 업데이트가 예정되어 있습니다. 업데이트 후 안내드리도록 하겠습니다.
  11. 안녕하세요 @hyejeongjo님, 앞서 작성해주신 내용 중 아래 사항에 대해 부연해주실 수 있을까요? 혹시 프롬프트 또는 변경사항이 나타나도록 응답 예시를 공유해주신다면 원인 파악에 큰 도움이 될 것 같습니다.
  12. 안녕하세요 @naduhale님, 아래와 같이 1번 Raw data 처리 과정에서 user agent를 정의하면 에러 발생을 방지할 수 있습니다. txt → html 변환 및 원본 사이트 주소 mapping url_to_filename_map = {} with open("clovastudiourl.txt", "r") as file: urls = [url.strip() for url in file.readlines()] folder_path = "clovastudioguide" if not os.path.exists(folder_path): os.makedirs(folder_path) for url in urls: filename = url.split("/")[-1] + ".html" file_path = os.path.join(folder_path, filename) subprocess.run(["wget", "--user-agent=RAGCookbook-Crawler/1.0", "-O", file_path, url], check=True) # Added agent name url_to_filename_map[url] = filename with open("url_to_filename_map.json", "w") as map_file: json.dump(url_to_filename_map, map_file)
  13. 안녕하세요 @탱구탱구님, 답변이 늦어진 점 양해 부탁드립니다. 우선 앞서 아래 문의주신 내용과 관련해서 답변드립니다: -> 각 tool의 결과 값을 다음 tool의 매개변수로 잘 활용하기 위한 범용적인 프롬프트나 설명은 따로 없습니다. 다만 "이전 툴에서 온 결과를 특정 oo파라미터에 반드시 적용해야한다" 등의 프롬프트를 사용하면 조금 도움이 될 것으로 생각됩니다. 번거로우시겠지만 직접 변경하면서 최적의 프롬프트(설명)을 찾는 것을 권장드립니다. 또한 공유주신 코드에서 에러가 발생하는 것은 이용하시려는 함수에서 dummy라는 변수의 기본값을 "now"로 설정하는 부분 때문인 것으로 보입니다. 자세한 원인 파악 및 개선 진행중에 있으며, 현재로서는 해당 부분을 제외하면 정상 작동하는 점 참고 부탁드립니다. def get_current_datetime(dummy: str = "now") -> str: 해당 수정에도 불가하고 원하는 응답을 내려주지 않는 문제가 있는데, 이 부분은 품질상의 문제로, 함수 실행 결과의 "current_time" 필드가 현재 시간이라는 점을 프롬프트 또는 함수 설명에 추가하거나 함수 실행 결과 필드명을 "현재_시간" 등으로 변경하면 해소가 되는 것으로 보입니다. 확인 부탁드리며, 추가로 궁금하신 점이 있는 경우 편히 말씀주세요. 감사합니다.
  14. 안녕하세요 @jun님, 말씀주신 사항을 제가 잘 이해하지 못했는데요. 이전 60초 이내 요청이 없다는 가정하에, 첫 요청이 들어온 시점으로부터 1분(=60초) 이내 요청이 60개를 넘는 경우, 처음으로 초과하는 요청 시점부터 남은 시간동안 들어오는 요청이 전부 429 에러를 받게 됩니다. 해당 윈도우는 첫 요청이 들어온 시점에서 1분이 지나면 리셋되며, 다시 그 이후 첫 요청이 들어온 시점부터 계산됩니다. 참고차 말씀드리면, 아래 링크에서 fixed window with user-defined start 방식으로 보시면 되겠습니다. https://smudge.ai/blog/ratelimit-algorithms#token-buckets 감사합니다.
  15. 안녕하세요 @jun님, CLOVA Studio의 이용량 제어는 사용자별 첫 요청을 시점으로 고정 윈도우 방식으로 이뤄지고 있습니다. 감사합니다.
  16. 안녕하세요 @탱구탱구님, Function calling 기능을 지원하는 HCX-005, HCX-DASH-002 두 모델을 사용하실 경우, langchain-naver를 통한 Tool 관련 기능 역시 사용하실 수 있습니다. 다만 max_tokens를 1024 이상으로 정의하셔야 하는 점 참고 부탁드립니다. (API 가이드) 또한 아마 정의하시는 Tool의 복잡도에 따라 기대하시는 바에 맞게 동작하지 않을 수 있는데요. 간단한 예제로는 StructuredTool도 잘 작동하는 것으로 확인되어 혹시 지원하지 않는 것으로 확인하신 이유 또는 실행하신 코드 스니펫을 공유해주실 수 있을까요? 확인해보고 보다 상세히 답변드릴 수 있도록 하겠습니다. 감사합니다.
  17. 안녕하세요 @jhyuk님, 클로바 스튜디오를 이용해주셔서 감사합니다. 문단 나누기 API를 통해 제공하고 있는 모델은 HCX와 다른 특화 모델로서 토크나이저 역시 다릅니다. 현재 별도 토크나이저 내지는 토큰계산기 API를 제공하고 있지 않는 점 양해 부탁드리며, 문의주신 맥락 (활용처) 을 부연주시면 추가로 도움이 되실만한 내용으로 답변드릴 수 있도록 하겠습니다. 감사합니다.
  18. 안녕하세요 @jun님, CLOVA Studio를 이용해주셔서 감사합니다. 우선 테스트 API 키로 적용했을 때에도 응답이 정상적으로 이뤄져야 합니다. 말씀주신대로라면 (API Status Code는 200인데 응답이 빈 경우) 뭔가 이슈가 있는 것으로 보이는데요. 빈 응답으로 오는 케이스 (API 요청 및 응답 구문) 를 전달해주시면 살펴보도록 하겠습니다. 아래 사용 가이드에서 안내하는 바와 같이 테스트 앱으로 충분히 테스트를 진행하신 후 실제 서비스를 출시하고자 하실 때에 서비스 앱을 신청하시면 되는데요. 꼭 회사가 아니더라도 개발하고자 하시는 서비스 정보를 적어주시면 심사에 참고하도록 하겠습니다. (https://guide.ncloud-docs.com/docs/clovastudio-app-publish) 테스트/서비스 앱별 이용량 제어 정보 역시 사용 가이드에서 확인하실 수 있습니다. (https://guide.ncloud-docs.com/docs/clovastudio-ratelimiting) 확인 부탁드리며, 앞서 말씀드린 빈 응답 케이스 전달주시면 감사하겠습니다.
  19. 안녕하세요 @cmefly97님, CLOVA Studio를 이용해주셔서 감사합니다. 현재 OpenAI 공식 API 및 Python SDK 기준으로 encoding format의 기본값이 서로 다른 것으로 확인됩니다. (전자는 float, 후자는 base64) CLOVA Studio의 오픈AI 호환 API는 OpenAI 공식 API Spec을 따르고 있으며, 이에 따라 curl 등을 통해 직접 이용하실 경우 encoding format을 별도로 정의하지 않아도 (float으로 처리하여) 정상 응답하고 있습니다. 이는 Python이 아닌 다른 언어의 SDK를 이용해도 마찬가지입니다. OpenAI의 Python SDK에서 임베딩을 이용할 경우 사용자가 별도로 정의하지 않으면 encoding_format="base64"로 설정되도록 되어 있고, CLOVA Studio의 임베딩 API는 해당 포맷을 지원하지 않기 때문에 에러를 출력하게 됩니다. 이는 OpenAI에서 Python에서는 API를 통해서 base64로 받아서 SDK에서 float으로 디코딩을 하는 것이 더 효율적이라고 판단했기 때문으로 보입니다 (관련 이슈: https://github.com/openai/openai-python/issues/1490) 때문에 제보주신 부분 인지하고 있으나, API 및 타 언어 기반 SDK와의 호환성을 위해 별도의 수정은 어려운 상황이며, 대신 API 가이드 상에 해당 부분을 유의사항으로 명시하고자 합니다. @cmefly97님께서도 OpenAI Python SDK로 임베딩 기능을 이용하실 때는 encoding_format을 float으로 정의하여 이용해주시면 감사하겠습니다. 그 외 추가로 궁금한 점이 있으시면 편히 말씀주세요. 감사합니다.
  20. 안녕하세요 @intube님, 해당 현상이 재현되지 않는 것으로 보이는데 혹시 구체적인 요청 구문을 공유해주실 수 있을까요? 포럼에 공유가 어려우신 경우 서비스 이용 문의를 접수하여 전달주셔도 됩니다. (링크: https://www.ncloud.com/support/question/service) 현재로서 확인된 바에 따라 답변을 드리자면 아래와 같습니다. 1. 이미지 입력 역시 .usage 필드에 포함되는 것이 정상 동작입니다. (오픈AI와 동일) 2. 토큰 사용량은 .usage 필드를 통해 확인하시면 됩니다.
  21. 안녕하세요 @ho0214님, 답변 감사드립니다. 우선 사용자 계정 관련 내용은 동일 API Key 여부를 여쭤본 것이 맞습니다. 그와 별개로 다시 확인해보니 호출하신 API Endpoint에서 testapp 또는 serviceapp이 빠져있는 것 같습니다. 클로바 스튜디오 우측 상단 프로필 > 내 작업 > 튜닝 에서 학습하신 모델 (튜닝 작업) 의 테스트 앱을 생성 후 해당 엔드포인트 (v1 또는 v2 앞에 'testapp'이 추가로 붙습니다) 확인하여 호출해보시겠어요? 해당 경우에도 오류 발생 시 말씀주시면 감사하겠습니다.
  22. 안녕하세요 @ho0214님, 우선 api version을 v2로 바꾸었을 때도 동일한 증상인지 확인 부탁드리며, 여전히 문제가 지속될 경우 튜닝에 사용하신 베이스 모델이 무엇인지, 혹시 학습을 진행한 계정과 chat completions를 이용하고자 하는 계정이 다른 것인지 여쭙습니다. 관련 정보 공유주시면 확인하여 답변드릴 수 있도록 하겠습니다. 감사합니다.
  23. 안녕하세요 @ksk02686님, 우선 신규 인증 방식을 추가로 출시하게 된 배경과 기능에 대한 설명을 먼저 드리도록 하겠습니다. 기존 인증 방식의 경우 테스트 앱 및 서비스 앱 마다 API Key가 제공되고 있었으며, 이로 인해 여러 모델 또는 API를 동시에 이용하고자 할 때 매번 그에 맞는 API Key를 이용해야 하는 불편함이 있었습니다. (추가로 APIGW Key가 요구되어 2개의 API Key를 관리하셔야 하는 상황이었습니다.) 신규 인증 방식의 경우 단일 API Key로 여러 테스트 앱 또는 서비스 앱을 이용할 수 있어 사용성이 크게 개선되었으며, 때문에 사용자 분들께 변경하실 것을 권장드리고 있습니다. 질문주신 사항에 대해 아래와 같이 답변드립니다: 1. 별도의 제공 중단 공지 없이는 기존 인증 방식을 계속해서 유지할 계획이며, 충분히 많은 사용자가 전환한 시점에 공지를 할 예정입니다. 공지 이후에도 최소 3~6개월은 기존 방식을 계속해서 제공할 예정인 점 참고 부탁드립니다. (이 경우 가이드 등의 채널 외로도 메일, 파트너사 등의 여러 채널을 통해서 공지해드리고자 하니 염려하지 않으셔도 될 것 같습니다.) 2. 신규 API Key는 테스트 앱/서비스 앱과 무관하게 계정에 대해 발급되므로 추가적인 서비스 앱 신청이 불필요합니다. 현재 등록된 서비스 앱이 있으시다면 서비스 API Key 발급이 즉시 가능하며, 신규 인증 방식 및 해당 API Key로 해당 서비스 앱을 포함하여 다른 등록 완료된 테스트 앱 및 서비스 앱 호출이 가능합니다. 관련하여 추가로 궁금하신 점이나 의견이 있으시면 편히 말씀주십시오. 감사합니다.
  24. 안녕하세요 @까치발님, CLOVA Studio와 CLOVA Sentiment는 다른 종류의 AI 기술이 적용된 상이한 서비스이며, 현재 CLOVA Studio에서는 CLOVA Sentiment와 동일한 기능을 제공하고 있지 않습니다. 때문에 말씀주신 것과 같이 긍정, 부정, 중립에 대한 수치를 반환할 수 있는 방법은 따로 없습니다. 기 확인하신 문의 및 답변 글과 같이 시스템 프롬프트 설정을 포함한 프롬프팅 또는 튜닝을 통해 분류 작업을 처리할 수 있는 점 참고 부탁드립니다. 감사합니다.
  25. 안녕하세요 @semiconductor님, 등록된 테스트 앱 및 서비스 앱에 대한 curl 및 python 호출 정보를 말씀주시는 것이라면 '앱 신청 현황' 목록에서 '자세히' 버튼을 눌러 확인하실 수 있습니다. 감사합니다.
×
×
  • Create New...