|
|
@@ -21,22 +21,17 @@ from llama_index.core.llms.llm import LLM
|
|
|
from src.models.product_model import Product
|
|
|
from src.manager.template_manager import TemplateManager, TemplateService, TemplateType
|
|
|
from src.models.ai_execution_record import MarketingInfo, LLMConfig, SuperPromptMixin, AgentConfig, AgentContent, AICompetitorAnalyzeMainKeywords, AICompetitorAnalyzeMainKeywordsResult, MarketingContentGeneration
|
|
|
+from ai.base_agent import BaseAgent
|
|
|
from utils.file import save_to_file, read_file
|
|
|
from config.settings import MONGO_URL, MONGO_DB_NAME,LITELLM_API_BASE, LITELLM_API_KEY,OPENAI_API_KEY,OPENAI_API_BASE
|
|
|
from utils.logu import get_logger
|
|
|
logger = get_logger("ai")
|
|
|
|
|
|
-class BaseAgent:
|
|
|
- def __init__(self, llm:LiteLLM, template_manager:TemplateManager):
|
|
|
- self.llm = llm
|
|
|
- self.template_manager = template_manager
|
|
|
-
|
|
|
- def get_mainkeys_tailkeys(self, template_str: str):
|
|
|
- pass
|
|
|
+
|
|
|
|
|
|
class MarketingAgent(BaseAgent):
|
|
|
- async def get_mainkeys_tailkeys_prompt(self, product_name, prompt: str='',output_type='markdown', verbose=False):
|
|
|
- base_prompt = "{{product_info}}\n{{competitor_info}}\n"
|
|
|
+ async def get_mainkeys_tailkeys_prompt(self, product_name, prompt: str='',output_type='markdown', verbose=False) -> PromptTemplate:
|
|
|
+ base_prompt = "```\n{{product_info}}\n{{competitor_info}}\n```\n"
|
|
|
prompt_mainkyes = prompt or '''\
|
|
|
你是日本站的亚马逊运营,请你根据产品信息为用户选出主要关键词和长尾关键词。
|
|
|
|
|
|
@@ -173,9 +168,11 @@ class MarketingAgent(BaseAgent):
|
|
|
logger.info(f"llm_name: {model.model_name} , {markdown[:100]}")
|
|
|
unsorted_content += f"# {display_name}\n{markdown}\n\n" # 使用基础名称
|
|
|
|
|
|
- content = sorted_content + unsorted_content
|
|
|
+ prompt_template = await self.get_mainkeys_tailkeys_prompt(product_name, output_type='markdown')
|
|
|
+ content = sorted_content + unsorted_content + f'# 提示词 \n{prompt_template.format()}\n\n'
|
|
|
+
|
|
|
return save_to_file(content, output_path)
|
|
|
-async def llm_task():
|
|
|
+async def llm_task(product_name):
|
|
|
m = TemplateManager(MONGO_URL, MONGO_DB_NAME)
|
|
|
await m.initialize()
|
|
|
model = 'openai/groq/llama-3.1-8b-instant'
|
|
|
@@ -186,17 +183,19 @@ async def llm_task():
|
|
|
# model = 'openai/deepseek-chat'
|
|
|
model = 'openai/deepseek-reasoner'
|
|
|
# model = 'openai/doubao-pro-32k-241215'
|
|
|
- llm_models = [
|
|
|
+ llm_list = [
|
|
|
+ # 'openai/doubao-pro-32k-241215',
|
|
|
+ LiteLLM(model='openai/doubao-pro-32k-241215', api_key=OPENAI_API_KEY, api_base=OPENAI_API_BASE),
|
|
|
+ # 'openai/deepseek-reasoner',
|
|
|
+ LiteLLM(model='openai/deepseek-reasoner', api_key=OPENAI_API_KEY, api_base=OPENAI_API_BASE),
|
|
|
# 'openai/deepseek-v3',
|
|
|
- 'openai/QwQ-32B',
|
|
|
- 'openai/deepseek-reasoner',
|
|
|
- 'openai/doubao-pro-32k-241215',
|
|
|
+ LiteLLM(model='openai/deepseek-v3', api_key=OPENAI_API_KEY, api_base=OPENAI_API_BASE),
|
|
|
+ # 'openai/QwQ-32B',
|
|
|
]
|
|
|
task_list = []
|
|
|
- for model in llm_models:
|
|
|
- llm = LiteLLM(model=model, api_key=OPENAI_API_KEY, api_base=OPENAI_API_BASE)
|
|
|
+ for llm in llm_list:
|
|
|
agent = MarketingAgent(llm=llm, template_manager=m)
|
|
|
- agent_model = agent.gen_mainkeys_tailkeys(product_name='大尺寸厚款卸妆棉240片', verbose=True, overwrite=True)
|
|
|
+ agent_model = agent.gen_mainkeys_tailkeys(product_name=product_name, verbose=True, overwrite=True)
|
|
|
task_list.append(agent_model)
|
|
|
# logger.info(f"{agent_model.competitor.items()}")
|
|
|
await asyncio.gather(*task_list)
|
|
|
@@ -204,24 +203,26 @@ async def llm_task():
|
|
|
# agent = MarketingAgent(llm=llm, template_manager=m)
|
|
|
# agent_model = await agent.gen_mainkeys_tailkeys(product_name='大尺寸厚款卸妆棉240片', verbose=True, overwrite=True)
|
|
|
# logger.info(f"{agent_model.competitor.items()}")
|
|
|
-async def gen_marketing_file():
|
|
|
+async def gen_marketing_file(product_name):
|
|
|
m = TemplateManager(MONGO_URL, MONGO_DB_NAME)
|
|
|
await m.initialize()
|
|
|
model = 'openai/deepseek-reasoner'
|
|
|
llm = LiteLLM(model=model, api_key=OPENAI_API_KEY, api_base=OPENAI_API_BASE)
|
|
|
- product_name = '大尺寸厚款卸妆棉240片'
|
|
|
+ # product_name = '大尺寸厚款卸妆棉240片'
|
|
|
agent = MarketingAgent(llm=llm, template_manager=m)
|
|
|
output_path = r'G:\code\amazone\copywriting_production\output\temp' + f"\\{product_name}-营销文案.md"
|
|
|
llm_models = [
|
|
|
'openai/doubao-pro-32k-241215',
|
|
|
'openai/deepseek-reasoner',
|
|
|
'openai/deepseek-v3',
|
|
|
-'openai/QwQ-32B',
|
|
|
+# 'openai/QwQ-32B',
|
|
|
]
|
|
|
await agent.gen_marketing_file(product_name=product_name, output_path=output_path, llm_models=llm_models)
|
|
|
logger.info(f"{output_path}")
|
|
|
def main():
|
|
|
- asyncio.run(gen_marketing_file())
|
|
|
+ product_name = '养花专用园艺迷你3件套'
|
|
|
+ # product_name = '园艺镊子套装2件套'
|
|
|
+ asyncio.run(gen_marketing_file(product_name=product_name))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
main()
|