Files
chatpbc-v33/chatpbc_conversational.py
ModelHub XC f61e872e5c 初始化项目,由ModelHub XC社区提供模型
Model: chatpbc1/chatpbc-v33
Source: Original Platform
2026-08-02 21:17:18 +08:00

92 lines
4.8 KiB
Python

import requests
import time
import json
import asyncio
import os
from chatpbc_file_processor import process_file
from chatpbc_webscraper import get_business_intelligence_brief
HF_TOKEN = "YOUR_HF_TOKEN_HERE"
ROUTER_ENDPOINT = "https://router.huggingface.co/v1/chat/completions"
CHAT_TEMPLATES = {
"chatpbc-v4": {
"model_id": "chatpbc1/chatpbc-v4",
"system_prompt": "You are ChatPBC V4, the apex AI business strategist and intelligence analyst developed by Mik Tse Agency. You have access to real-time website data and uploaded business documents provided by the user. Your role is to deliver world-class business consulting: strategic analysis, competitive intelligence, market research, financial modeling guidance, M&A advisory, go-to-market strategy, operational efficiency, and organizational transformation. You cover 26 industries: Technology, Finance, Healthcare, Retail, Manufacturing, Energy, Telecom, Automotive, Real Estate, Media, Travel, Food & Beverage, Agriculture, Education, Government, Consulting, Logistics, Marketing, Human Resources, Legal, Non-profit, Biotechnology, Aerospace & Defense, Fashion, Sports & Entertainment, and Environmental Services. When given website data or files, analyze them deeply and provide actionable strategic insights. Always maintain full conversation memory. Respond with the depth and precision of a McKinsey senior partner."
},
"chatpbc-v33": {
"model_id": "chatpbc1/chatpbc-v33",
"system_prompt": "You are ChatPBC V3.3, a highly intelligent and conversational AI business consultant developed by Mik Tse Agency. You have access to real-time website data and uploaded business documents provided by the user. You are warm, professional, and strategic. You respond like a real human consultant: you greet users, ask follow-up questions, show empathy when businesses are struggling, and provide clear, actionable advice. You cover 26 industries: Technology, Finance, Healthcare, Retail, Manufacturing, Energy, Telecom, Automotive, Real Estate, Media, Travel, Food & Beverage, Agriculture, Education, Government, Consulting, Logistics, Marketing, Human Resources, Legal, Non-profit, Biotechnology, Aerospace & Defense, Fashion, Sports & Entertainment, and Environmental Services. When given website data or files, analyze them and provide practical, implementable recommendations. Always maintain full conversation memory."
}
}
async def query_model(model_id, user_message, conversation_history=None, files=None, url=None):
model_config = CHAT_TEMPLATES.get(model_id)
if not model_config:
raise ValueError(f"Model ID {model_id} not found in CHAT_TEMPLATES.")
headers = {
"Authorization": f"Bearer {HF_TOKEN}",
"Content-Type": "application/json"
}
context_str = ""
if files:
for file_path in files:
processed_content = process_file(file_path)
context_str += f"=== File: {file_path.split('/')[-1]} ===\n{processed_content}\n\n"
if url:
print(f"Scraping URL: {url}")
web_brief = await get_business_intelligence_brief(url)
context_str += f"=== Website Analysis: {url} ===\n{web_brief}\n\n"
full_user_message = f"{context_str}{user_message}" if context_str else user_message
messages = [{"role": "system", "content": model_config["system_prompt"]}]
if conversation_history:
for turn in conversation_history:
messages.append(turn)
messages.append({"role": "user", "content": full_user_message})
payload = {
"model": model_config["model_id"],
"messages": messages,
"max_tokens": 1024,
"temperature": 0.7,
"stream": False
}
for i in range(5): # 5 retries
try:
response = requests.post(ROUTER_ENDPOINT, headers=headers, json=payload, timeout=300)
if response.status_code in [503, 429]:
print(f"Model loading or rate limited, retrying in 10 seconds... (Attempt {i+1}/5)")
time.sleep(10)
continue
response.raise_for_status()
result = response.json()
return result["choices"][0]["message"]["content"]
except requests.exceptions.RequestException as e:
print(f"Attempt {i+1} failed: {e}")
if i == 4:
raise Exception("Failed to get response after multiple retries.")
time.sleep(10)
async def main():
# Example usage
print("Querying ChatPBC V4...")
try:
response_v4 = await query_model(
"chatpbc-v4",
"What are the key business insights for a new tech startup?",
files=[],
url=None
)
print("ChatPBC V4 Response:", response_v4)
except Exception as e:
print(f"Error with ChatPBC V4: {e}")
if __name__ == "__main__":
asyncio.run(main())