보고서 생성을 위해 Anthropics Claude Sonnet 사용
Anthropic의 Claude 3.5 Sonnet을 활용한 보고서 생성: 두 가지 방법의 비교
안녕하세요 여러분! 저는 브라질 부동산 회사 Pilar의 공동 창립자이자 CTO인 Raphael입니다. Pilar는 낮은 성공 수수료 모델을 사용하여 부동산 중개인 및 중개 회사에 소프트웨어 및 서비스를 제공합니다. 높은 선불 수수료를 청구하는 대신, 우리는 성공적인 거래마다 소액의 수수료를 받아 우리의 성공을 고객의 성공과 직접 연결합니다. 20명의 기술자로 구성된 우리 팀은 끊임없이 혁신하고 있으며 최신 제품은 주택 구입자와 부동산 중개인에게 최고의 경험을 제공하도록 설계된 새로운 부동산 포털인 Pilar Homes입니다.
이 게시물에서는 인공 지능을 사용하여 보고서, 특히 Anthropic의 Claude 3.5 Sonnet을 생성한 경험을 공유하고 두 가지 방법을 비교해 보겠습니다.
작업 처리에 대한 우리의 철학은 향후 기사에서 자세히 설명하겠지만(계속 지켜봐 주시기 바랍니다!) 간단히 말해서 이러한 작업은 Jira 티켓으로 "기술 헬프 데스크" 게시판에 올라갑니다. 보고서 생성은 그러한 작업 중 하나이며 대부분의 작업은 엔지니어가 해결하는 데 약 30분 정도 소요되며, 복잡한 보고서는 거의 몇 시간 이상 걸리지 않습니다. 그러나 상황이 변하고 있습니다. 우리가 한두 명의 파트너와 함께 시작한 부티크 브랜드는 더 큰 에이전시로 확장되고 있으며 업계의 기존 플레이어와 더 많은 계약을 체결하고 있습니다. 엔지니어 시간을 늘리면 증가하는 보고 요구 사항을 해결할 수 있지만 AI 에이전트를 탐색하고 실제 환경에서 아키텍처 패턴을 배울 수 있는 기회를 보았습니다.
방법 1: AI가 max_tokens 한도를 완전히 처리하고 도달하도록 합니다
초기 접근 방식에서는 도구를 Claude의 3.5 Sonnet 모델에 노출하여 데이터베이스 쿼리를 수행하고 검색된 문서를 CSV로 변환하고 결과를 .csv 파일에 쓸 수 있도록 했습니다.
위의 블로그 게시물에서 많은 영감을 받은 구조는 다음과 같습니다.
<code># 每个collection对象描述一个MongoDB集合及其字段 # 这有助于Claude理解我们的数据模式 COLLECTIONS = [ { 'name': 'companies', 'description': 'Companies are the real estate brokerages. If the user provides a code to filter the data, it will be a company code. The _id may be retrieved by querying the company with the given code. Company codes are not used to join data.', 'fields': { '_id': 'The ObjectId is the MongoDB id that uniquely identifies a company document. Its JSON representation is \"{"$oid": "the id"}\"', 'code': 'The company code is a short and human friendly string that uniquely identifies the company. Never use it for joining data.', 'name': 'A string representing the company name', } }, # 此处之后描述了更多集合,但思路相同... ] # 这是client.messages.create的“system”参数 ROLE_PROMPT = "You are an engineer responsible for generating reports in CSV based on a user's description of the report content" # 这是“user”消息 task_prompt = f"{report_description}.\nAvailable collections: {COLLECTIONS}\nCompany codes: {company_codes}\n.Always demand a company code from the user to filter the data -- the user may use the terms imobiliária, marca, brand or company to reference a company. If the user wants a field that does not exist in a collection, don't add it to the report and don't ask the user for the field." </code>
report_description은 argparse를 통해 읽은 명령줄 인수일 뿐이며, company_codes는 데이터베이스에서 검색되어 모델에 노출되므로 어떤 회사가 존재하는지, 사용자 입력에 어떤 회사 코드가 있는지 알 수 있습니다. 예: (MO - 모자이크 주택, NV - Nova Real Estate 등).
모델에 사용할 수 있는 도구에는 find 및 docs2csv가 있습니다.
<code>def find(collection: str, query: str, fields: list[str]) -> Cursor: """Find documents in a collection filtering by "query" and retrieving fields via projection""" return db.get_collection(collection).find(query, projection={field: 1 for field in fields}) def docs2csv(documents: list[dict]) -> list[str]: """ Convert a dictionary to a CSV string. """ print(f"Converting {len(documents)} documents to CSV") with open('report.csv', mode='w', encoding='utf-8') as file: writer = csv.DictWriter(file, fieldnames=documents[0].keys()) writer.writeheader() writer.writerows(documents) return "report.csv"</code>
Claude는 find 기능을 호출하여 데이터베이스에 대해 잘 구조화된 쿼리와 예측을 수행하고 docs2csv 도구를 사용하여 작은 CSV 보고서(500행 미만)를 생성할 수 있었습니다. 그러나 더 큰 보고서는 max_tokens 오류를 유발합니다.
토큰 사용 패턴을 분석한 결과 토큰 소비의 대부분이 모델을 통한 개인 기록 처리에서 발생한다는 사실을 깨달았습니다. 이로 인해 우리는 Claude가 데이터를 직접 처리하는 대신 처리 코드를 생성하도록 하는 또 다른 접근 방식을 모색하게 되었습니다.
방법 2: 솔루션으로서의 Python 코드 생성
max_tokens 제한을 해결하는 것은 기술적으로 어렵지 않지만 문제 해결에 대한 접근 방식을 재고해야 합니다.
해결책? Claude가 AI를 통해 각 문서를 처리하는 대신 CPU에서 실행될 Python 코드를 생성하게 하세요.
캐릭터와 퀘스트 프롬프트를 수정하고 도구를 제거해야 했습니다.
다음은 리포트 생성 코드의 요지입니다.
보고서를 생성하는 명령은 다음과 같습니다.
<code># 每个collection对象描述一个MongoDB集合及其字段 # 这有助于Claude理解我们的数据模式 COLLECTIONS = [ { 'name': 'companies', 'description': 'Companies are the real estate brokerages. If the user provides a code to filter the data, it will be a company code. The _id may be retrieved by querying the company with the given code. Company codes are not used to join data.', 'fields': { '_id': 'The ObjectId is the MongoDB id that uniquely identifies a company document. Its JSON representation is \"{"$oid": "the id"}\"', 'code': 'The company code is a short and human friendly string that uniquely identifies the company. Never use it for joining data.', 'name': 'A string representing the company name', } }, # 此处之后描述了更多集合,但思路相同... ] # 这是client.messages.create的“system”参数 ROLE_PROMPT = "You are an engineer responsible for generating reports in CSV based on a user's description of the report content" # 这是“user”消息 task_prompt = f"{report_description}.\nAvailable collections: {COLLECTIONS}\nCompany codes: {company_codes}\n.Always demand a company code from the user to filter the data -- the user may use the terms imobiliária, marca, brand or company to reference a company. If the user wants a field that does not exist in a collection, don't add it to the report and don't ask the user for the field." </code>
Claude가 생성한 Python 콘텐츠(잘 작동함):
<code>def find(collection: str, query: str, fields: list[str]) -> Cursor: """Find documents in a collection filtering by "query" and retrieving fields via projection""" return db.get_collection(collection).find(query, projection={field: 1 for field in fields}) def docs2csv(documents: list[dict]) -> list[str]: """ Convert a dictionary to a CSV string. """ print(f"Converting {len(documents)} documents to CSV") with open('report.csv', mode='w', encoding='utf-8') as file: writer = csv.DictWriter(file, fieldnames=documents[0].keys()) writer.writeheader() writer.writerows(documents) return "report.csv"</code>
결론
Claude 3.5 Sonnet과 함께한 우리의 여정은 AI가 운영 효율성을 크게 향상시킬 수 있지만 성공의 열쇠는 올바른 아키텍처를 선택하는 데 있음을 보여줍니다. 코드 생성 접근 방식은 자동화의 이점을 유지하면서 직접 AI 처리보다 더 강력한 것으로 입증되었습니다.
코드 생성 방법을 통해 보고서를 올바르게 작성할 수 있을 뿐만 아니라 엔지니어가 AI의 작업을 검토할 수 있다는 점은 매우 좋습니다.
프로세스를 완전히 자동화하고, 사람의 개입을 없애고, 더 많은 양의 보고서를 처리하기 위해 여러 에이전트 인스턴스에 작업을 분산하고(각각 더 적은 수의 토큰을 처리) 시스템이 자연스럽게 발전할 것입니다. 이러한 분산 AI 시스템의 아키텍처 문제에 대해서는 AI 제품 구축에 관한 Phil Calçado의 최신 기사를 적극 권장합니다.
이 구현을 통해 얻은 주요 교훈:
- 직접 AI 처리는 소규모 데이터 세트에도 작동합니다
- 코드 생성으로 더 나은 확장성과 유지 관리 가능성 제공
- 사람의 검토로 신뢰성이 높아집니다
참고자료
- 인류학 문서
- Python SDK를 사용하는 도구를 사용하는 Thomas Taylor의 Anthropic Claude
- AI 제품 구축 - 1부: Phil Calçado의 백엔드 아키텍처
위 내용은 보고서 생성을 위해 Anthropics Claude Sonnet 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

Pythonlistsarepartoftsandardlardlibrary, whileraysarenot.listsarebuilt-in, 다재다능하고, 수집 할 수있는 반면, arraysarreprovidedByTearRaymoduledlesscommonlyusedDuetolimitedFunctionality.

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.
