You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`LLMClient` provides a unified interface for interacting with several large language model (LLM) providers and includes helpers for converting tasks to documentation, reconstructing tasks from documentation, and translating experiment resources.
6
+
7
+
It supports:
8
+
9
+
-**Google Gemini** via the GenAI SDK (`provider="gemini"`)
10
+
-**OpenAI** models (`provider="openai"`)
11
+
-**Deepseek** models using the OpenAI API format (`provider="deepseek"`)
12
+
13
+
Custom providers can also be registered programmatically.
14
+
15
+
## Initialization
16
+
17
+
Create an instance by specifying the provider, API key, and model name:
18
+
19
+
```python
20
+
from psyflow import LLMClient
21
+
22
+
client = LLMClient(
23
+
provider="openai",
24
+
api_key="YOUR_API_KEY",
25
+
model="gpt-3.5-turbo"
26
+
)
27
+
```
28
+
29
+
The client wraps the underlying SDK and exposes common methods regardless of provider.
30
+
31
+
## Generating Text
32
+
33
+
Use `generate(prompt, **kwargs)` to obtain a completion from the configured model. Optional keyword arguments are passed to the underlying provider. Setting `deterministic=True` disables sampling randomness.
34
+
35
+
```python
36
+
reply = client.generate(
37
+
"Summarise the Stroop task in one sentence",
38
+
deterministic=True,
39
+
max_tokens=50
40
+
)
41
+
print(reply)
42
+
```
43
+
44
+
## Converting Tasks to Documentation
45
+
46
+
`task2doc()` summarises an existing task into a README. The function loads your task logic and configuration, optionally uses few‑shot examples from `add_knowledge()`, and returns the generated Markdown text. If `output_path` is provided the README is also written to disk.
47
+
48
+
```python
49
+
readme_text = client.task2doc(
50
+
logic_paths=["./src/run_trial.py", "./main.py"],
51
+
config_paths=["./config/config.yaml"],
52
+
deterministic=True,
53
+
output_path="./README.md"
54
+
)
55
+
```
56
+
57
+
## Recreating Tasks from Documentation
58
+
59
+
`doc2task()` performs the reverse operation. Given a README or raw description it regenerates the key source files. Provide a directory for outputs via `taps_root` and optionally customise the list of expected file names.
60
+
61
+
```python
62
+
files = client.doc2task(
63
+
doc_text="./README.md",
64
+
taps_root="./recreated_task",
65
+
deterministic=True
66
+
)
67
+
# files is a dict mapping each file name to its saved path
68
+
```
69
+
70
+
## Translation Utilities
71
+
72
+
Several helper methods assist with localisation. The base `translate(text, target_language)` function translates arbitrary text while keeping formatting intact. `translate_config()` applies translation to relevant fields in a psyflow YAML configuration and can write the translated file to disk.
73
+
74
+
```python
75
+
translated = client.translate(
76
+
"Press the space bar when you see the target word",
77
+
target_language="German"
78
+
)
79
+
80
+
new_cfg = client.translate_config(
81
+
target_language="German",
82
+
config="./config/config.yaml",
83
+
output_dir="./i18n"
84
+
)
85
+
```
86
+
87
+
These utilities store the last prompt and response for inspection (`last_prompt`, `last_response`) and automatically count tokens for the active model.
88
+
89
+
## Further Reading
90
+
91
+
See the API reference for a full description of all attributes and methods provided by [`psyflow.LLMClient`](../api/psyflow#psyflow.LLMClient).
0 commit comments