huggingface/client.py
2025-08-18 13:20:56 +02:00

85 lines
2.4 KiB
Python

from ollama import Client, ChatResponse
client = Client(host='http://localhost:11434')
def askGPT(systemprompt,userprompt):
messages = [{
'role': 'system',
'content': systemprompt
},{
'role': 'user',
'content': userprompt
}]
# 1) First call: let the model decide to call the tool
resp: ChatResponse = client.chat(
model='gpt-oss', # be explicit about the tag
messages=messages,
)
# Model chose not to call the tool; just print what it said
print("############### content ###############")
print(resp.message.content)
print("############### Message ###############")
print(resp['message']) # or print(resp.message)
return(resp['message'])
def howToSayHello() -> str:
"""Return the customary greeting."""
print("function called")
return "Hallo Welt"
def askGPTwithTools(systemprompt,userprompt):
messages = [{
'role': 'system',
'content': systemprompt
},{
'role': 'user',
'content': userprompt
}]
# 1) First call: let the model decide to call the tool
resp: ChatResponse = client.chat(
model='gpt-oss', # be explicit about the tag
messages=messages,
tools=[howToSayHello],
)
tcalls = resp.message.tool_calls or []
if tcalls:
# 2) Execute the requested tool(s)
tool_msgs = []
for tc in tcalls:
if tc.function.name == 'howToSayHello':
result = howToSayHello()
else:
result = f"Unknown tool: {tc.function.name}"
tool_msgs.append({
"role": "tool",
"content": result,
# include id if present; Ollama doesn't always require it
**({"tool_call_id": getattr(tc, "id", None)} if getattr(tc, "id", None) else {})
})
# 3) Send tool outputs back, then ask the model to finish
messages = messages + [resp.message] + tool_msgs
final = client.chat(model='gpt-oss', messages=messages)
print("############### content ###############")
print(final.message.content)
else:
# Model chose not to call the tool; just print what it said
print("############### content ###############")
print(resp.message.content)
print("############### Message ###############")
print(resp['message']) # or print(resp.message)
return(resp['message'])