Local Ollama를 사용하여 SEO 메타 제목 및 설명을 자동 생성하는 방법
구조화된 SEO 제목과 메타 설명을 일괄 생성하고, 결과물을 검증하고, 사람이 검토해야 할 결과를 표시하는 로컬 Ollama 워크플로를 구축하세요.
AutoGen 루프 디버깅 전에 알아두어야 할 중요한 플랫폼 변경 사항이 있습니다. 2026년 9월 현재, 공식 AutoGen 저장소는 유지 관리 모드로 전환되었습니다. 새로운 기능 추가보다는 유지 관리 작업이 진행될 예정이며, Microsoft는 새로운 프로젝트에 Microsoft Agent Framework 사용을 권장합니다. 공식 AutoGen 저장소는 여전히 Python 0.7.5를 현재 안정적인 버전으로 표시하고 있으며, Microsoft는 2026년 8월 25일에 AutoGen에서 Agent Framework로의 마이그레이션 가이드를 업데이트하여 게시했습니다. 하지만 이미 AutoGen을 프로덕션 환경에서 사용하고 있다면 아래의 문제 해결 기법은 여전히 유용합니다. 자세한 내용은 공식 AutoGen 저장소 , 공식 AutoGen 릴리스 및 Microsoft의 AutoGen 마이그레이션 가이드를 참조하십시오 .
AutoGen 에이전트가 "무한 루프에 갇힌 것처럼 보이는" 이유는 일반적으로 다음 다섯 가지 중 하나입니다. 실행에 안정적인 종료 조건이 없거나, 다음 발언자 정책이 비효율적인 참가자를 계속 선택하거나, 도구 호출 후 가시적인 진행 상황이 생성되지 않거나, 에이전트 간에 핸드오버가 반복되거나, 애플리케이션이 계속해서 이전 상태를 재개하는 경우입니다. 가장 빠른 해결 방법은 모든 프롬프트를 다시 작성하는 것이 아닙니다. 먼저 실제로 어떤 루프가 발생하는지 파악한 다음, 강제 종료 조건을 추가하고, 실패하는 전환을 수정하면 됩니다.
| 징후 | 가능성 있는 원인 | 먼저 확인해야 할 사항 |
|---|---|---|
| 동일한 두 에이전트가 무한히 번갈아 가며 활동합니다. | 라우팅 또는 핸드오프 탁구 | 화자 선택, 핸드오프 대상, 최대 메시지 또는 최대 턴 제한 |
| 한 에이전트가 거의 동일한 인수를 사용하여 동일한 도구를 반복적으로 호출합니다. | 도구 결과는 발전이나 실패를 증명하지 않습니다. | max_tool_iterations도구 반환 스키마 및 재시도 로직 |
| 작업이 눈에 띄게 완료된 후에도 팀원들은 계속해서 이야기를 나눕니다. | 프롬프트에서는 완료가 암시적으로만 나타납니다. | 명시적 종료 조건 및 확정적 완료 신호 |
| 선발 담당자가 반복적으로 잘못된 전문가를 선택합니다. | 모호한 에이전트 설명 또는 선택 프롬프트 | 참가자 설명, 후보군 및allow_repeated_speaker |
| 새로운 작업이 이전 작업의 동작을 계승하는 것처럼 보입니다. | 국가는 의도적으로 보존되었다 | 새 작업을 시작하기 전에 팀 또는 에이전트를 재설정해야 하는지 여부 |
| 그래프 워크플로는 검토/재작성 과정을 영원히 반복합니다. | 종료 조건이 절대 참이 되지 않습니다. | 사이클 종료 조건자 및 독립적인 안전 종료 |
AutoGen AgentChat은 팀 간의 제한을 유지하기 위해 내장된 종료 조건을 제공합니다. 안정적인 문서에는 MaxMessageTermination, TextMentionTermination, TokenUsageTermination, TimeoutTermination, HandoffTermination, SourceMatchTermination, ExternalTermination, StopMessageTermination, TextMessageTermination, FunctionCallTermination, 및 가 포함되어 있습니다 FunctionalTermination. AutoGen 공식 종료 문서를 참조하십시오 .
대부분의 프로덕션 워크플로에서는 의미론적 완료 조건 과 독립적인 안전 한계를 사용합니다. 중요한 연산자는 일반적으로 OR입니다. 작업이 정상적으로 완료되거나 안전 한계에 도달하면 실행이 중지되도록 하기 위함입니다.
from autogen_agentchat.conditions import (
MaxMessageTermination,
TextMentionTermination,
)
done = TextMentionTermination("TERMINATE")
safety_cap = MaxMessageTermination(max_messages=25)
termination = done | safety_cap
흔히 저지르는 실수 중 하나는 "완료되면 종료"라고만 하는 것입니다. 이렇게 하면 정확성은 모델링 동작에 맡겨지게 됩니다. 또 다른 실수는 &"둘 중 하나라도 만족하면 중지"라는 의미로 조건을 결합하는 것입니다. AutoGen은 AND와 OR 연산을 모두 지원하므로 의미 체계를 신중하게 선택해야 합니다.
하드캡은 회로 차단기일 뿐, 워크플로가 올바르다는 증거는 아닙니다. 만약 실행이 항상 하드캡에 걸려 중단된다면, 여전히 수정해야 할 논리적 문제가 있는 것입니다.
가장 강력한 종료 신호는 애플리케이션이 별도의 해석 없이 인식할 수 있는 신호입니다. 워크플로에 명확한 성공 이벤트가 있는 경우, 가장 유사한 종료 조건을 사용하십시오. 예를 들어, 특정 핸드오프는 `<handoff>`로 HandoffTermination, 특정 도구 완료는 `<tool complete>`로 FunctionCallTermination, 사용자 지정 로직은 `<custom_logic>`으로 감지할 수 있습니다 FunctionalTermination.
`--` 연산자를 사용할 경우 TextMentionTermination("TERMINATE"), 책임 소재를 명확히 하세요. 어떤 주체가 완료를 선언할 수 있는지, 그리고 어떤 검증된 조건에서 완료를 선언할 수 있는지를 구체적으로 명시해야 합니다. 모든 참여자에게 "만족할 때까지 계속하세요"와 같은 모호한 지시를 내리는 것은 피해야 합니다. 이러한 지시는 "만족"의 기준이 명확하지 않기 때문에 끝없는 수정과 재작업을 초래할 수 있습니다.
유용한 완료 계약은 구체적이어야 합니다. 예를 들어, "검토자는 초안에 필수 세 가지 섹션이 모두 포함되고 해결되지 않은 문제가 남아 있지 않을 때만 종료(TERMINATE) 신호를 보냅니다."와 같이 말입니다. 가능하다면 검토자가 애플리케이션이 확인할 수 있는 구조화된 상태를 생성하도록 하는 것이 더 좋습니다.
SelectorGroupChat공유된 대화 컨텍스트에서 다음 화자를 선택하는 모델을 사용합니다. 안정적인 문서에서는 참가자 이름과 설명이 화자 선택에 사용되므로 중요하다고 명시하고 있습니다. 기본적으로 동일한 화자는 사용 가능한 에이전트가 한 명뿐인 경우를 제외하고는 연속해서 선택되지 않지만, 이 동작은 변경 가능합니다. AutoGen은 보다 확정적인 제어가 필요할 때 사용할 수 있는 옵션도 제공합니다. 자세한 내용은 SelectorGroupChat 공식 문서 allow_repeated_speaker=True를 참조 하십시오 .selector_funccandidate_func
같은 참가자가 계속해서 선택되는 경우, 다음 사항들을 순서대로 확인하세요.
allow_repeated_speaker 연속적인 발언이 정말로 필요한 경우가 아니면 꺼 두십시오 .selector_func 워크플로가 대화로 위장한 상태 기계일 때 사용합니다 .핵심적인 차이점은 간단합니다. 다음 화자에 대한 의미 판단이 진정으로 필요한 경우에는 LLM 기반 화자 선택을 사용하고, 워크플로 상태에 따라 다음 화자 순서가 결정되는 경우에는 결정론적 라우팅을 사용하십시오.
현재 AgentChat에는 매개변수가 AssistantAgent있습니다 max_tool_iterations. 안정적인 API 문서에 따르면 기본값은 1이며, 이 값을 높이면 모델이 텍스트 응답을 반환하거나 최대값에 도달할 때까지 상담원이 순차적으로 도구를 호출할 수 있습니다. 즉, 단일 상담원 실행은 이 설정에 의해 제한되지만, 동일한 상담원이 팀에 의해 다시 선택되어 여러 차례에 걸쳐 동일한 실패한 도구 패턴을 반복할 수 있습니다. 자세한 내용은 공식 AssistantAgent API 참조를 확인하세요 .
agent = AssistantAgent(
name="worker",
model_client=model_client,
tools=[lookup_tool],
max_tool_iterations=3,
)
동일한 도구와 인수가 반복적으로 사용되는 경우, 반복 횟수 제한을 줄이는 것은 피해를 일시적으로 완화하는 데 그칠 뿐입니다. 근본적인 해결책은 대개 도구 계약에 있습니다. 모델은 호출이 성공했는지, 영구적으로 실패했는지, 일시적으로 실패했는지, 아니면 새로운 정보를 생성하지 않았는지 판단하는 데 필요한 충분한 정보를 갖춰야 합니다.
다음과 같이 간결하고 명확한 결과를 선호합니다.
{
"status": "no_new_data",
"query": "customer_123",
"retryable": false,
"reason": "record already checked",
"next_action": "return_to_planner"
}
이는 "결과 없음"과 같은 일반적인 문자열보다 훨씬 유용합니다. 왜냐하면 모델은 동일한 호출을 반복하는 것이 진전이 아니라는 것을 알 수 있기 때문입니다. 부작용이 있는 도구의 경우, 애플리케이션 수준에서 멱등성을 추가하여 반복적인 호출이 동일한 티켓, 결제, 메시지 또는 데이터베이스 변경을 반복적으로 생성하지 못하도록 해야 합니다.
안정적인 AssistantAgent참조 문서에서는 여러 도구 호출이 동시에 실행될 수 있으며, 지원되는 모델 클라이언트에서 병렬 도구 호출을 비활성화할 수 있다고 명시하고 있습니다. 또한 여러 개의 핸드오프가 감지될 경우 첫 번째 핸드오프만 실행되므로, 이러한 상황을 방지하기 위해 병렬 도구 호출을 비활성화할 것을 권장합니다. 워크플로에서 한 번에 하나의 작업만 수행하는 엄격한 상태 전환을 가정하는 경우, 병렬 호출로 인해 결과 상태를 이해하기가 더 어려워질 수 있습니다.
핸드오프 루프는 일반적으로 다음과 같습니다. 에이전트 A는 에이전트 B가 더 적합하다고 판단하고, 에이전트 B는 불완전한 컨텍스트를 확인하고 작업을 다시 에이전트 A에게 보냅니다. 그리고 두 선택 모두 로컬에서는 영원히 타당한 것으로 유지됩니다. 문제는 어느 모델이 "틀렸다"는 것이 아닙니다. 핸드오프 정책에 소유권과 최종 상태가 결여되어 있는 것입니다.
모든 핸드오프에 명확한 조건과 대상이 더 이상 진행할 수 없을 때 발생하는 상황에 대한 규칙을 부여하여 문제를 해결하세요. 사용자 상호 작용 워크플로의 경우, HandoffTermination(target="user")제어권이 애플리케이션이나 담당자에게 돌아가야 할 때 팀의 작업을 중지하도록 설계되었습니다. AutoGen의 휴먼 인 더 루프(Human-in-the-Loop) 관련 문서에서도 Swarm 워크플로는 사용자 핸드오프 후 의도적인 재개 동작이 필요하다고 설명합니다. 자세한 내용은 공식 휴먼 인 더 루프 문서를 참조하세요 .
훌륭한 인수인계 계약서에는 다음 사항이 포함됩니다.
GraphFlow의도적인 반복, 조건부 분기 및 루프 종료를 지원합니다. 안정적인 API는 루프가 결국 종료되는 조건이 있을 때만 유효하다고 설명하며, 빌더는 그래프 구조의 유효성을 검사합니다. 또한 이 기능은 실험적인 기능으로 표시되어 있습니다. 구조적으로 유효한 루프라도 종료 조건에 논리적으로 도달할 수 없는 경우 너무 오래 실행될 수 있으므로, 독립적인 종료 조건을 설정하거나 루프 주변에 전환 제한을 두는 것이 좋습니다. 자세한 내용은 AutoGen 팀의 공식 API 참조를 확인하세요 .
이는 특히 "작성자 → 검토자 → 작성자" 구조에서 중요합니다. 검토자에게 "완벽해질 때까지 계속 개선하라"고 지시하면, 최종 목표가 결코 달성되지 않을 수 있습니다. 주관적인 완벽함 대신 필수 항목 포함, 유효성 검사 통과, 중대한 결함 없음, 최대 수정 횟수 충족과 같은 구체적인 평가 기준을 적용하는 것이 좋습니다.
AgentChat 상담원과 팀은 상태를 유지합니다. AutoGen의 안정적인 문서에 따르면 팀은 실행 간에 대화 컨텍스트를 유지하여 관련 작업이 계속될 수 있도록 하며, reset()팀 및 참여자 상태를 지우는 기능도 제공합니다. 이러한 동작은 작업 연속성에 유용하지만, 관련 없는 작업이 이전 컨텍스트, 미완료된 위임 또는 이전 가정을 상속받는 경우 무한 루프처럼 보일 수 있습니다.
await team.reset()
result = await team.run(task=new_unrelated_task)
안정적인 상담원 API는 발신자에게 전체 대화 기록을 수동으로 다시 재생하는 대신 각 통화에서 새로운 메시지만 전달하도록 경고합니다. 상담원이 상태를 유지하면서 전체 기록을 다시 주입하면 맥락이 중복되고 반복적인 행동이 강화될 수 있습니다.
반복 실행이 어려운 경우, 매 턴마다 다음 네 가지 질문에 답할 수 있도록 충분한 정보를 기록하세요. 누가 행동했는지, 왜 선택되었는지, 어떤 행동을 시도했는지, 그리고 그 후에 무엇이 바뀌었는지. AutoGen은 추적 및 관찰 기능을 지원하며, 안정적인 추적 가이드에서 AgentChat 팀 추적 방법을 보여줍니다. 자세한 내용은 AutoGen 공식 추적 문서를 참조하세요 .
최소한 다음 내용을 기록하십시오:
TaskResult.stop_reason달리기가 끝날 때."동일한 동작, 동일한 상태" 감지는 매우 효과적인 진단 방법입니다. 동일한 에이전트가 동일한 도구를 동일한 인수로 호출하고 공유 상태 해시가 여러 턴 동안 변경되지 않으면 실행을 중지하고 진행이 없는 루프로 표시합니다. 이 검사는 AutoGen에 내장된 기능이 아니라 애플리케이션 로직에 포함되어야 하지만, 토큰이나 메시지 제한으로는 사후에만 파악할 수 있는 유형의 오류를 포착할 수 있습니다.
기존 AutoGen AgentChat 애플리케이션의 경우, 보수적인 기준선은 다음과 같습니다.
max_tool_iterations요원이 여러 단계의 도구 사용 순서가 정말로 필요한 경우가 아니라면 규모를 작게 유지하세요 .모든 루프를 단순히 25에서 100으로 올리는 방식으로 해결하지 마십시오. max_messages이는 실패 비용만 변경할 뿐 논리는 바꾸지 않습니다. 종료 조건이 실제로 팀에 연결되었는지 확인하기 전에 더 긴 시스템 프롬프트를 추가하지 마십시오. 두 명의 상담원이 "최종 검토"를 동시에 담당하도록 하지 마십시오. 다음 모델 호출에서 재시도 여부를 결정해야 하는 경우 모호한 도구 문자열을 반환하지 마십시오. 그리고 결국 중지되는 실행을 정상이라고 가정하지 마십시오. 항상 안전 한계에 도달하는 워크플로도 여전히 오작동하고 있는 것입니다.
기존 AutoGen 애플리케이션을 유지 관리하는 경우 이러한 수정 사항이 적합하며 현재 설명서도 계속 사용할 수 있습니다. 하지만 새 시스템을 구축하거나 오케스트레이션을 대폭 재작성해야 하는 경우에는 유지 관리 모드 상태에 따라 결정이 달라집니다. Microsoft는 이제 신규 사용자에게 Microsoft Agent Framework를 권장하며, 해당 마이그레이션 설명서에서는 AutoGen의 이벤트 기반 코어 및 상위 수준 팀에서 유형화된 그래프 기반 워크플로로의 전환을 설명합니다. 이는 AutoGen 루프를 즉시 마이그레이션해야 한다는 의미는 아니지만, AutoGen 관련 오케스트레이션 작업을 심층적으로 수행하는 데 드는 비용과 지원되는 후속 버전으로 전환하는 비용을 비교하여 고려해야 한다는 의미입니다.
따라서 가장 빠르고 확실한 디버깅 경로는 실행 범위를 제한하고, 반복되는 전환을 식별하고, 진행 상황을 관찰 가능하게 만든 다음, 종료를 확정적으로 만드는 것입니다. 이 네 가지 요소가 갖춰지면 대부분의 "무한" 자동 생성 루프는 재현 및 수정이 가능한 일반적인 워크플로 버그가 됩니다.
구조화된 SEO 제목과 메타 설명을 일괄 생성하고, 결과물을 검증하고, 사람이 검토해야 할 결과를 표시하는 로컬 Ollama 워크플로를 구축하세요.
Use this free modern real estate listing presentation PowerPoint blueprint to organize pricing, marketing, property prep, agent value, and seller next steps.
인건비, 자재비, 수식, 마크업, 제외 항목 및 인쇄 가능한 고객 총액을 명확하게 표시하는 인쇄 가능한 건설 공사 견적서 템플릿을 Excel에서 만드세요.
실용적인 영화 조명 공식, 재사용 가능한 레시피, 예제 및 빠른 문제 해결 체크리스트를 활용하여 Luma Dream Machine 비디오 프롬프트를 더욱 효과적으로 만드세요.
적절한 슬라이드 순서, 명확한 디자인 규칙, 성과 지표, 그리고 투자자에게 보여줄 수 있는 부록을 포함하여, 간결한 기술 스타트업 투자 유치용 프레젠테이션 자료를 파워포인트로 제작하세요.
Excel에서 코드, ID 및 분수를 날짜로 변환하는 것을 방지하세요. 텍스트 서식, 작은따옴표, 가져오기 컨트롤 및 현재 Microsoft 365 옵션을 사용하세요.
샘플링 작업 감소, 해상도 및 배치 크기 제어, 노드 단순화, 캐싱 사용, VRAM 및 어텐션 안전 조정 등을 통해 ComfyUI SDXL 렌더링 속도를 향상시키세요.
명확한 범주, 수식, 월별 요약 및 세금 신고에 필요한 기록 관리 지침을 포함하는 실용적인 임대 부동산 수입 및 지출 추적 도구를 Excel로 만들어 보세요.
Ollama, AnythingLLM, 로컬 임베딩 및 RAG를 사용하여 로컬 AI 지식 기반을 구축하세요. 4단계 설정, 개인정보 보호 점검, 테스트 및 백업 방법을 알아보세요.
긴 문서 분석에서 컨텍스트 창 오류를 수정하려면 입력값을 다듬고, 파일을 분할하고, 검색 기능을 사용하고, 최종 결과가 출처를 제대로 반영하는지 확인해야 합니다.