【crewai 用olllama本地大模型的跑通的例子】

1、测试ollama的代码

import requests
import json
url_generate = "http://localhost:11435/api/chat"
def get_response(url, data):
    response = requests.post(url, json=data)
    response_dict = json.loads(response.text)
    print("模型回复:",response_dict)
#     response_content = response_dict["response"]
#     return response_content

data = {
    "model": "qwen2.5-coder:7b",
    "messages": [
    { "role": "user", "content": "你好" }
  ],
    "stream": False
    
}


res = get_response(url_generate,data)
print(res)

2、安装好crew用本地ollama提供大模型服务

from langchain_openai import ChatOpenAI
import os

#将ollama的api转化为OPENAI式的api,方便crewai调用
#设置系统环境变量OPENAI_API_BASE和OPENAI_API_KEY
os.environ["OPENAI_API_BASE"] = "http://localhost:11435/v1"
os.environ["OPENAI_API_KEY"] = "NA"

llama_model = ChatOpenAI(model = "qwen2.5-coder:7b")

from crewai_tools import SerperDevTool
search_tool = SerperDevTool()
os.environ["SERPER_API_KEY"] = "C0E999B040F14917AF693921C80D5861"# serper.dev API key

from crewai import Agent

planner = Agent(
    role = "内容策划专员",
    goal = "策划有关{topic}的引人入胜且事实准确的内容",
    backstory = (
        "您是一名内容策划专员,正在计划撰写一篇主题为“{topic}”的博客文章, "
        "文章将发布在 'https://medium.com/'。"
        "您收集的信息可帮助受众了解某些内容,使受众能因此做出明智的决定。"
        "您必须准备一份详细的大纲,博客文章中应包含的相关主题和子主题。"
        "您的工作是内容创作专员撰写此主题文章的基础。"
        "工作语言是中文。"
    ),
    llm = llama_model,
    allow_delegation = False,
    tools=[search_tool],
    verbose = True
)


writer = Agent(
    role = "内容创作专员",
    goal = "撰写主题{topic}的评论文章,要深刻且事实准确",
    backstory = (
        "您是一名内容编辑专员,正在撰写一篇主题 “{topic}” 的新观点文章, "
        "文章将发表在 'https://medium.com/'。"
        "内容策划师提供了有关该主题的大纲和相关背景。"
        "您创作内容时,请遵循内容策划师提供的大纲为主要目标和方向。"
        "同时您将提供客观公正的见解,并使用内容策划师提供的信息支持您的见解。"
        "您在观点文章中承认您的陈述是意见,而不是客观陈述。"
        "工作语言是中文。"
    ),
    allow_delegation = False,
    llm = llama_model,
    verbose = True
)


editor = Agent(
    role = "内容编辑专员",
    goal = "编辑给定的博客文章,以符合网站 'https://medium.com/' 的写作风格",
    backstory = (
        "您是一名内容编辑专员,收到内容创作专员发来的博客文章。"
        "您的目标是审核博客文章,确保其符合新闻业最佳实践,"
        "在发表意见或主张时提供平衡的观点,并尽可能避免重大争议话题或意见。"
        "工作语言是中文。"
    ),
    llm = llama_model,
    allow_delegation = False,
    verbose = True
)

from crewai import Task

plan = Task(
    description = (
        "1. 优先考虑“{topic}”的最新趋势、关键参与者和值得关注的新闻。\n"
        "2. 确定目标受众,考虑他们的兴趣和痛点。\n"
        "3. 制定详细的内容大纲,包括简介、要点和行动号召。\n"
        "4. 包括 SEO 关键字和相关数据或来源。"
    ),
    expected_output = "一份全面的内容计划文档,其中包含大纲、受众分析、SEO 关键字和参考资源。",
    agent = planner,
)


write = Task(
    description = (
        "1. 使用内容策划专员的内容策划,撰写一篇关于“{topic}”的引人入胜的博客文章。\n"
        "2. 自然地融入 SEO 关键词。\n"
        "3. 章节/副标题以引人入胜的方式正确命名。\n"
        "4. 确保文章结构合理,有引人入胜的介绍、有见地的正文和总结性结论。\n"
        "5. 校对语法错误并与品牌调性保持一致。\n"
    ),
    expected_output = "一篇写得很好的、准备发布的 Markdown 格式的博客文章,每个部分应该有 2 或 3 个段落。",
    agent = writer,
)


edit = Task(
    description = (
        "校对给定的博客文章"
        "检查其语法错误并与品牌调性保持一致。"
    ),
    expected_output = "一篇写得很好的、准备发布的 Markdown 格式的博客文章,每个部分应该有 2 或 3 个段落。",
    agent = editor
)

#组装成CREW
from crewai import Agent, Task, Crew
crew = Crew(
    agents = [planner, writer, editor],
    tasks = [plan, write, edit],
    verbose = 2
)


#撰写一个Topic: "在管理学领域,如何用Python做文本分析" 的文章
inputs = {"topic": "Python文本分析"}
result = crew.kickoff(inputs=inputs)

结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ai君臣

学会的就要教给人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值