文章目录
1、背景
你要懂一些基础的概念,不懂的话,照着做也可以
通过搭建一个本地的智能体,完成你想要智能体完成的任务。
结果:完成了
2、步骤
1、最好你有台linux电脑,因为在window下不知道你有遇到了什么奇怪的问题
2、ollama提供大模型服务
ollama 镜像
https://docker.aityp.com/r/docker.io/ollama/ollama 下载 通过docker pull就行
docker ps -a 有这样一个镜像
启动该镜像
docker exec -it a9b494fcbd39 /bin/bash
列出来有哪些模型
ollama list
输出如下:
NAME ID SIZE MODIFIED
qwen2.5:3b 357c53fb659c 1.9 GB 8 weeks ago
qwen2.5-coder:1.5b 7088ac567b1e 986 MB 8 weeks ago
qwen2.5-coder:7b 4a26c19c376e 4.7 GB 8 weeks ago
nomic-embed-text:latest 0a109f422b47 274 MB 8 weeks ago
qwen2.5:7b 845dbda0ea48 4.7 GB 8 weeks ago
启动模型
ollama run qwen2.5-coder:7b
3、测试大模型接口
最快的方式测试部署好了服务 需要注意端口号:11435 这个跟镜像配置有关
curl http://localhost:11435/api/chat -d '{"model": "qwen2.5-coder:7b","messages":[{"role":"user","content": "你好" }],"stream":false}'
测试接口调用
3.1 python生成文本调用
url_generate = "http://localhost:11435/api/generate"
def get_response(url, data):
response = requests.post(url, json=data)
response_dict = json.loads(response.text)
response_content = response_dict["response"]
return response_content
data = {
"model": "qwen2.5-coder:7b",
"prompt": "你好",
"stream": False
}
res = get_response(url_generate,data)
print(res)
3.2 python生成聊天补全
url_chat = "http://localhost:11435/api/chat"
data = {
"model": "qwen2.5-coder:7b",
"messages": [
{
"role": "user",
"content": "你好"
}],
"stream": False
}
response = requests.post(url_chat, json=data)
response_dict = json.loads(response.text)
print(response_dict)
3、langchain调用
通过直接指定地址来调用
from langchain_community.chat_models import ChatOllama
llama_model = ChatOllama(
model="qwen2.5-coder:7b",
base_url="http://localhost:11435" # 明确指定服务地址
)
response = llama_model.invoke("你好,请介绍一下自己")
print(response.content)
通过os的环境变量来配置
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")
response = llama_model.invoke("你好,请介绍一下自己")
print(response.content)
4、智能体
利用crewai编写智能体并完成任务
import os
##默认方式,直接使用gpt4, 需要设置OPENAI_API_KEY
# os.environ["OPENAI_API_KEY"] = "Your Key"
###通过Ollama使用本地模型的方式1:
os.environ["OPENAI_API_BASE"] = 'http://localhost:11435/v1' ## 这里如果填http://localhost:11434 会报404错误
os.environ["OPENAI_MODEL_NAME"] ='qwen2.5-coder:7b' # Adjust based on available model
os.environ["OPENAI_API_KEY"] ='NA'
# # ######################################
# # ###通过Ollama使用本地模型的方式2:
# from langchain.llms import Ollama
# llm = Ollama(
# model="llama3:8b",
# base_url="http://localhost:11435") ##不给base_url参数也可以。如果给的话这里写http://localhost:11434/v1 会报错,提示langchain_community.llms.ollama.OllamaEndpointNotFoundError: Ollama call failed with status code 404. Maybe your model is not found and you should pull the model with `ollama pull llama3:8b`.
# ##############################
from crewai import Agent, Task, Crew
research_agent = Agent(
role='Researcher',
goal='Find and summarize the latest AI news',
backstory="""You're a researcher at a large company.
You're responsible for analyzing data and providing insights
to the business.""",
verbose=True,
# llm=llm ### 注意使用方式2时, 这里需要手动传入llm
)
task = Task(
description='Find and summarize the latest AI news',
expected_output='A bullet list summary of the top 5 most important AI news',
agent=research_agent,
tools=[]
)
crew = Crew(
agents=[research_agent],
tasks=[task],
verbose=2
)
result = crew.kickoff()
print(result)