AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.

MongoDB 와 Fireworks AI 통합

MongoDB 오픈 소스 모델을 위한 추론 및 교육 플랫폼인 Fireworks AI 와 통합할 수 있습니다. 이 가이드 에이전트 응답에 대한 컨텍스트를 제공하고 에이전트의 데이터 저장 구성할 수 있는 MongoDB 와 함께 Fireworks 채팅 모델을 사용하는 방법을 보여줍니다.

Fireworks AI 위한 MongoDB 통합은 다음과 같은 기능을 제공합니다.

  • 채팅 모델 데이터: MongoDB 데이터를 채팅 모델에 컨텍스트로 전달하거나 모델이 호출하는 도구에 노출합니다.

  • 상담원 메모리: 에이전트 대화 기록과 세션 상태 문서로 유지합니다.

  • 교육 데이터 소스: MongoDB 데이터를 사용하여 Fireworks 모델을 미세 조정하고 사용 사례에 맞게 동작을 사용자 지정할 수 있습니다.

Fireworks SDK 또는 OpenAI API 와 같은 호환 API를 사용하여 Fireworks 채팅 모델을 호출할 수 있습니다. LangChain, LangGraph, LlamaIndex 등 OpenAI 호환 제공자를 지원 프레임워크도 Fireworks와 함께 작동합니다.

MongoDB Vector Search와 함께 Fireworks 모델을 사용하여 RAG 애플리케이션 빌드 하는 튜토리얼을 완료하려면 MongoDB Fireworks AI 통합 시작하기를 참조하세요.

필요한 패키지를 설치하려면 다음 명령을 실행 .

pip install --quiet --upgrade pymongo openai

이 명령은 다음 패키지를 설치합니다.

  • pymongo: MongoDB Python 운전자

  • openai: 이 페이지의 예제에서 Fireworks 채팅 모델을 호출하는 데 사용하는 OpenAI 클라이언트

LangChain으로 빌드 경우 langchain-fireworks 패키지의 ChatFireworks 클래스를 사용하여 Fireworks 채팅 모델을 호출합니다. 다음 명령을 실행하여 이 패키지 설치합니다.

pip install --quiet --upgrade langchain-fireworks

MongoDB 에서 Fireworks 채팅 모델을 사용하려면 다음 클라이언트를 생성하세요.

  • Fireworks 엔드포인트를 사용하도록 구성된 클라이언트(예: OpenAI 클라이언트)

  • 배포서버 위한 MongoDB 클라이언트

다음 예시 이러한 클라이언트를 모두 생성하고 Fireworks 채팅 모델을 선택합니다.

FIREWORKS_BASE_URL = "https://api.fireworks.ai/inference/v1"fireworks = OpenAI( base_url=FIREWORKS_BASE_URL, api_key=os.environ["FIREWORKS_API_KEY"],) mongo_client = MongoClient(os.environ["MONGODB_URI"])collection = mongo_client["<database-name>"]["<collection-name>"] CHAT_MODEL = "accounts/fireworks/models/gpt-oss-120b"

이 예시 사용하려면 다음 환경 변수를 설정하다 .

Fireworks 모델에 대화를 보내고 응답을 받으려면 Fireworks 클라이언트 에서 chat.completions.create() 메서드를 호출합니다. 이 섹션에서는 다음과 같은 방법으로 채팅 모델 상호 작용을 사용자 지정하는 방법을 보여줍니다.

사용자가 제공하는 컨텍스트를 기반으로 답변 생성하려면 messages 매개변수를 다음 메시지가 포함된 목록으로 설정하다 .

  • system 제공된 컨텍스트에서만 답변 하도록 모델에 지시하는 메시지

  • user 컨텍스트와 질문이 포함된 메시지

MongoDB 쿼리 결과를 user 메시지의 컨텍스트로 전달하여 MongoDB 데이터에서 응답을 생성할 수 있습니다.

다음 예시 MongoDB 컬렉션 에서 소수의 후보 문서 설정하다 쿼리합니다. 그런 다음 코드는 제목과 줄거리를 컨텍스트로 제공하여 영화 추천을 생성합니다.

question = "Recommend a movie about a heist that goes wrong."movies = collection.find( {"plot": {"$regex": r"\bheist\b", "$options": "i"}}, {"_id": 0, "title": 1, "plot": 1}).limit(5)context = "\n".join(f'{m["title"]}: {m["plot"]}' for m in movies) response = fireworks.chat.completions.create( model=CHAT_MODEL, messages=[ { "role": "system", "content": "Answer using only the movies in the context. " "If the context doesn't contain the answer, say so.", }, { "role": "user", "content": f"Context:\n{context}\n\nQuestion: {question}", }, ],) print(response.choices[0].message.content)

지원되는 Fireworks 채팅 모델이 호출할 수 있는 도구 목록을 지정하려면 tools 매개변수를 사용합니다. 이 매개변수를 함수 정의 목록으로 설정하며, 각 정의에는 함수의 이름, 설명, 매개변수가 포함되어 있습니다.

모델이 함수를 호출하기로 결정하면 응답 메시지에 텍스트 답변 대신 tool_calls 목록을 반환합니다. 이 코드는 명명된 함수를 실행하고 결과를 tool 메시지로 다시 전송하여 대화를 계속합니다. 이 패턴 사용하여 MongoDB 컬렉션 쿼리하는 함수와 같이 도구를 호출할 시점을 결정하는 에이전트 빌드 .

이 예에서는 다음 조치를 수행합니다.

  • MongoDB 쿼리하는 search_movies 도구를 정의합니다.

  • 모델이 도구를 호출할지 여부를 결정할 수 있습니다.

  • 모델이 요청하는 경우 search_movies 도구를 실행하고 결과를 모델로 다시 보냅니다.

  • 최종 권장 사항 생성

AGENT_MODEL = "accounts/fireworks/models/kimi-k3" TOOLS = [ { "type": "function", "function": { "name": "search_movies", "description": "Keyword search over movie plots in the MongoDB movie catalog.", "parameters": { "type": "object", "properties": { "keyword": { "type": "string", "description": "A single keyword to search for in movie plots.", } }, "required": ["keyword"], }, }, }] def search_movies(keyword): results = collection.find( {"plot": {"$regex": rf"\b{keyword}\b", "$options": "i"}}, {"_id": 0, "title": 1, "plot": 1} ).limit(5) return [f'{m["title"]}: {m["plot"]}' for m in results] messages = [ { "role": "system", "content": "Call search_movies before you recommend a movie.", }, { "role": "user", "content": "Recommend a movie about a heist that goes wrong.", },] response = fireworks.chat.completions.create( model=AGENT_MODEL, messages=messages, tools=TOOLS,)message = response.choices[0].messagemessages.append(message.model_dump(exclude_none=True)) for call in message.tool_calls: args = json.loads(call.function.arguments) results = search_movies(**args) messages.append( { "role": "tool", "tool_call_id": call.id, "content": json.dumps(results), } ) response = fireworks.chat.completions.create(model=AGENT_MODEL, messages=messages)print(response.choices[0].message.content)

이전 대화 차례를 기억하는 에이전트 구성하려면 각 메시지를 MongoDB 컬렉션 에 저장 . 그런 다음 chat.completions.create() 메서드를 호출할 때마다 메시지 기록을 messages 목록에 로드합니다. 각 메시지 문서 에 session_id 값을 저장하여 저장된 기록을 단일 대화에 할당합니다.

이 예에서는 다음 조치를 수행합니다.

  • chat_history 컬렉션 에서 세션에 대한 기존 메시지 기록을 로드합니다.

  • 새 사용자 메시지를 추가하고 결합된 기록과 함께 chat.completions.create()를 호출합니다.

  • 새 사용자 메시지와 모델의 응답을 chat_history 컬렉션 에 다시 저장합니다.

history = mongo_client["<database-name>"]["chat_history"] def load_history(session_id): return [ doc["message"] for doc in history.find({"session_id": session_id}).sort("seq", 1) ] def save_messages(session_id, messages, start_seq): history.insert_many( {"session_id": session_id, "seq": start_seq + i, "message": message} for i, message in enumerate(messages) ) session_id = "demo-session"past_messages = load_history(session_id)new_messages = [{"role": "user", "content": "Recommend a movie about a heist that goes wrong."}] response = fireworks.chat.completions.create( model=AGENT_MODEL, messages=past_messages + new_messages,)new_messages.append(response.choices[0].message.model_dump(exclude_none=True)) save_messages(session_id, new_messages, start_seq=len(past_messages))print(response.choices[0].message.content)

에이전트 모든 호출에서 chat_history 컬렉션 의 과거 메시지를 로드하므로 동일한 session_id 값을 사용하는 향후 호출은 이 대화를 다시 참조할 수 있습니다.

MongoDB 에 저장된 데이터를 기반으로 기존 오픈 소스 채팅 모델을 교육하여 특정 사용 사례에 맞게 동작을 사용자 지정하고 정확도를 높일 수 있습니다.

모델 교육 에 MongoDB 데이터를 사용하려면 문서에 Fireworks에서 예상하는 채팅 형식의 messages 배열 저장 있어야 합니다. 이러한 문서를 컬렉션 에서 JSONL 파일 로 내보냅니다. 여기서 각 줄은 한 문서의 messages 배열 입니다. 그런 다음 데이터 세트를 업로드하고 firectl, Fireworks CLI 사용하여 지도 미세 조정을 시작합니다.

다음 명령을 실행하여 데이터 세트를 업로드하고 모델을 다시 학습시킵니다.

firectl dataset create <dataset-name> <path-to-jsonl-file>firectl sftj create \ --base-model <base-model-id> \ --dataset <dataset-name> \ --output-model <output-model-name>

교육 이 완료되면 조정된 모델을 배포 하고 채팅 호출에서 기본 모델 ID 대신 해당 모델 ID 사용합니다. 지원되는 기본 모델, 교육 방법 및 배포서버 옵션에 대해 학습 Fireworks 설명서에서 지도 미세 조정을 참조하세요.